summaryrefslogtreecommitdiff
authorharlekin <harlekin>2002-08-01 00:47:09 (UTC)
committer harlekin <harlekin>2002-08-01 00:47:09 (UTC)
commitba034bf4cb91b83654056945fc27313a28528015 (patch) (unidiff)
tree4df33783ca21017424135aacc2e45b94437cfdff
parent26ff0c72228b9c89b079dfa381d448b6152eb408 (diff)
downloadopie-ba034bf4cb91b83654056945fc27313a28528015.zip
opie-ba034bf4cb91b83654056945fc27313a28528015.tar.gz
opie-ba034bf4cb91b83654056945fc27313a28528015.tar.bz2
gcc3.x fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-sheet/cellformat.cpp47
-rw-r--r--noncore/apps/opie-sheet/finddlg.cpp2
-rw-r--r--noncore/apps/opie-sheet/mainwindow.cpp2
-rw-r--r--noncore/apps/opie-sheet/numberdlg.cpp5
-rw-r--r--noncore/apps/opie-sheet/sheet.cpp14
-rw-r--r--noncore/apps/opie-sheet/sortdlg.cpp5
-rw-r--r--noncore/apps/opie-sheet/textdlg.cpp5
-rw-r--r--noncore/tools/remote/helptab.cpp2
-rw-r--r--noncore/tools/remote/helptab.h7
-rw-r--r--noncore/tools/remote/recorddialog.cpp9
-rw-r--r--noncore/tools/remote/recorddialog.h8
11 files changed, 74 insertions, 32 deletions
diff --git a/noncore/apps/opie-sheet/cellformat.cpp b/noncore/apps/opie-sheet/cellformat.cpp
index 597502c..342ebe9 100644
--- a/noncore/apps/opie-sheet/cellformat.cpp
+++ b/noncore/apps/opie-sheet/cellformat.cpp
@@ -1,110 +1,135 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include "cellformat.h" 15#include "cellformat.h"
16 16
17#include <qlistbox.h> 17#include <qlistbox.h>
18#include <qlabel.h> 18#include <qlabel.h>
19 19
20#define COMBO_WIDTHS 155 20#define COMBO_WIDTHS 155
21#define COMBO_HEIGHTS 21 21#define COMBO_HEIGHTS 21
22 22
23#define COLOR_COUNT 17 23#define COLOR_COUNT 17
24#define STYLE_COUNT 14 24#define STYLE_COUNT 14
25#define HALIGN_COUNT 3 25#define HALIGN_COUNT 3
26#define VALIGN_COUNT 3 26#define VALIGN_COUNT 3
27 27
28QColor qtColors[COLOR_COUNT]={Qt::black, Qt::white, Qt::darkGray, Qt::gray, Qt::lightGray, Qt::red, Qt::green, Qt::blue, Qt::cyan, Qt::magenta, Qt::yellow, Qt::darkRed, Qt::darkGreen, Qt::darkBlue, Qt::darkCyan, Qt::darkMagenta, Qt::darkYellow}; 28QColor qtColors[COLOR_COUNT]={Qt::black,Qt::white, Qt::darkGray,
29Qt::BrushStyle brushStyles[STYLE_COUNT]={Qt::SolidPattern, Qt::Dense1Pattern, Qt::Dense2Pattern, Qt::Dense3Pattern, Qt::Dense4Pattern, Qt::Dense5Pattern, Qt::Dense6Pattern, Qt::Dense7Pattern, Qt::HorPattern, Qt::VerPattern, Qt::CrossPattern, Qt::BDiagPattern, Qt::FDiagPattern, Qt::DiagCrossPattern}; 29 Qt::gray, Qt::lightGray, Qt::red,
30 Qt::green, Qt::blue, Qt::cyan,
31 Qt::magenta, Qt::yellow,
32 Qt::darkRed, Qt::darkGreen,
33 Qt::darkBlue, Qt::darkCyan,
34 Qt::darkMagenta, Qt::darkYellow};
35
36Qt::BrushStyle brushStyles[STYLE_COUNT]={Qt::SolidPattern,
37 Qt::Dense1Pattern, Qt::Dense2Pattern,
38 Qt::Dense3Pattern, Qt::Dense4Pattern,
39 Qt::Dense5Pattern, Qt::Dense6Pattern,
40 Qt::Dense7Pattern, Qt::HorPattern,
41 Qt::VerPattern, Qt::CrossPattern,
42 Qt::BDiagPattern, Qt::FDiagPattern,
43 Qt::DiagCrossPattern};
44
30QString namesHAlign[HALIGN_COUNT]={"Left", "Right", "Center"}; 45QString namesHAlign[HALIGN_COUNT]={"Left", "Right", "Center"};
31QString namesVAlign[VALIGN_COUNT]={"Top", "Bottom", "Center"}; 46QString namesVAlign[VALIGN_COUNT]={"Top", "Bottom", "Center"};
32Qt::AlignmentFlags flagsHAlign[HALIGN_COUNT]={Qt::AlignLeft, Qt::AlignRight, Qt::AlignHCenter};
33Qt::AlignmentFlags flagsVAlign[VALIGN_COUNT]={Qt::AlignTop, Qt::AlignBottom, Qt::AlignVCenter};
34 47
35CellFormat::CellFormat(QWidget *parent=0) 48Qt::AlignmentFlags flagsHAlign[HALIGN_COUNT]={Qt::AlignLeft,
49 Qt::AlignRight,
50 Qt::AlignHCenter};
51
52Qt::AlignmentFlags flagsVAlign[VALIGN_COUNT]={Qt::AlignTop,
53 Qt::AlignBottom,
54 Qt::AlignVCenter};
55
56CellFormat::CellFormat(QWidget *parent)
36 :QDialog(parent, 0, TRUE) 57 :QDialog(parent, 0, TRUE)
37{ 58{
38 // Main widget 59 // Main widget
39 tabs=new QTabWidget(this); 60 tabs=new QTabWidget(this);
40 widgetBorders=new QWidget(tabs); 61 widgetBorders=new QWidget(tabs);
41 widgetBackground=new QWidget(tabs); 62 widgetBackground=new QWidget(tabs);
42 widgetFont=new QWidget(tabs); 63 widgetFont=new QWidget(tabs);
43 widgetAlignment=new QWidget(tabs); 64 widgetAlignment=new QWidget(tabs);
44 tabs->addTab(widgetBorders, tr("&Borders")); 65 tabs->addTab(widgetBorders, tr("&Borders"));
45 tabs->addTab(widgetBackground, tr("Back&ground")); 66 tabs->addTab(widgetBackground, tr("Back&ground"));
46 tabs->addTab(widgetFont, tr("&Font")); 67 tabs->addTab(widgetFont, tr("&Font"));
47 tabs->addTab(widgetAlignment, tr("&Alignment")); 68 tabs->addTab(widgetAlignment, tr("&Alignment"));
48 69
49 fontDB.loadRenderers(); 70 fontDB.loadRenderers();
50 changedFont=changedAlign=changedBrush=FALSE; 71 changedFont=changedAlign=changedBrush=FALSE;
51 72
52 // Borders tab 73 // Borders tab
53 borderEditor=new BorderEditor(widgetBorders); 74 borderEditor=new BorderEditor(widgetBorders);
54 borderEditor->setGeometry(10, 10, 215, 145); 75 borderEditor->setGeometry(10, 10, 215, 145);
55 connect(borderEditor, SIGNAL(clicked(BorderEditor::BorderArea)), this, SLOT(borderClicked(BorderEditor::BorderArea))); 76 connect(borderEditor, SIGNAL(clicked(BorderEditor::BorderArea)),
77 this, SLOT(borderClicked(BorderEditor::BorderArea)));
56 78
57 comboBordersWidth=createCombo(COMBO_WIDTH, widgetBorders, tr("&Width:"), 165); 79 comboBordersWidth=createCombo(COMBO_WIDTH, widgetBorders, tr("&Width:"), 165);
58 comboBordersColor=createCombo(COMBO_COLOR, widgetBorders, tr("&Color:"), 165+(COMBO_HEIGHTS+10)); 80 comboBordersColor=createCombo(COMBO_COLOR, widgetBorders, tr("&Color:"), 165+(COMBO_HEIGHTS+10));
59 81
60 buttonBordersDefaults=new QPushButton(tr("&Default Borders"), widgetBorders); 82 buttonBordersDefaults=new QPushButton(tr("&Default Borders"), widgetBorders);
61 buttonBordersDefaults->setGeometry(115, 165+2*(COMBO_HEIGHTS+10), 110, COMBO_HEIGHTS); 83 buttonBordersDefaults->setGeometry(115, 165+2*(COMBO_HEIGHTS+10),
62 connect(buttonBordersDefaults, SIGNAL(clicked()), this, SLOT(slotBordersDefaults())); 84 110, COMBO_HEIGHTS);
85
86 connect(buttonBordersDefaults, SIGNAL(clicked()),
87 this, SLOT(slotBordersDefaults()));
63 88
64 // Background tab 89 // Background tab
65 frameBackground=new QFrame(widgetBackground); 90 frameBackground=new QFrame(widgetBackground);
66 frameBackground->setGeometry(10, 10, 215, 145); 91 frameBackground->setGeometry(10, 10, 215, 145);
67 frameBackground->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); 92 frameBackground->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
68 93
69 comboBackgroundStyle=createCombo(COMBO_STYLE, widgetBackground, tr("&Style:"), 165); 94 comboBackgroundStyle=createCombo(COMBO_STYLE, widgetBackground, tr("&Style:"), 165);
70 connect(comboBackgroundStyle, SIGNAL(activated(int)), this, SLOT(backgroundClicked(int))); 95 connect(comboBackgroundStyle, SIGNAL(activated(int)), this, SLOT(backgroundClicked(int)));
71 comboBackgroundColor=createCombo(COMBO_COLOR, widgetBackground, tr("&Color:"), 165+(COMBO_HEIGHTS+10)); 96 comboBackgroundColor=createCombo(COMBO_COLOR, widgetBackground, tr("&Color:"), 165+(COMBO_HEIGHTS+10));
72 connect(comboBackgroundColor, SIGNAL(activated(int)), this, SLOT(backgroundClicked(int))); 97 connect(comboBackgroundColor, SIGNAL(activated(int)), this, SLOT(backgroundClicked(int)));
73 98
74 buttonBackgroundDefaults=new QPushButton(tr("&Default Background"), widgetBackground); 99 buttonBackgroundDefaults=new QPushButton(tr("&Default Background"), widgetBackground);
75 buttonBackgroundDefaults->setGeometry(115, 165+2*(COMBO_HEIGHTS+10), 110, COMBO_HEIGHTS); 100 buttonBackgroundDefaults->setGeometry(115, 165+2*(COMBO_HEIGHTS+10), 110, COMBO_HEIGHTS);
76 connect(buttonBackgroundDefaults, SIGNAL(clicked()), this, SLOT(slotBackgroundDefaults())); 101 connect(buttonBackgroundDefaults, SIGNAL(clicked()), this, SLOT(slotBackgroundDefaults()));
77 102
78 // Font tab 103 // Font tab
79 frameFont=new QFrame(widgetFont); 104 frameFont=new QFrame(widgetFont);
80 frameFont->setGeometry(10, 10, 215, 125); 105 frameFont->setGeometry(10, 10, 215, 125);
81 frameFont->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); 106 frameFont->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
82 107
83 comboFontFamily=createCombo(COMBO_FONT, widgetFont, tr("&Font:"), 145); 108 comboFontFamily=createCombo(COMBO_FONT, widgetFont, tr("&Font:"), 145);
84 connect(comboFontFamily, SIGNAL(activated(int)), this, SLOT(fontClicked(int))); 109 connect(comboFontFamily, SIGNAL(activated(int)), this, SLOT(fontClicked(int)));
85 comboFontSize=createCombo(COMBO_SIZE, widgetFont, tr("&Size:"), 145+(COMBO_HEIGHTS+10)); 110 comboFontSize=createCombo(COMBO_SIZE, widgetFont, tr("&Size:"), 145+(COMBO_HEIGHTS+10));
86 connect(comboFontSize, SIGNAL(activated(int)), this, SLOT(fontClicked(int))); 111 connect(comboFontSize, SIGNAL(activated(int)), this, SLOT(fontClicked(int)));
87 comboFontColor=createCombo(COMBO_COLOR, widgetFont, tr("&Color:"), 145+2*(COMBO_HEIGHTS+10)); 112 comboFontColor=createCombo(COMBO_COLOR, widgetFont, tr("&Color:"), 145+2*(COMBO_HEIGHTS+10));
88 connect(comboFontColor, SIGNAL(activated(int)), this, SLOT(fontClicked(int))); 113 connect(comboFontColor, SIGNAL(activated(int)), this, SLOT(fontClicked(int)));
89 114
90 checkFontBold=new QCheckBox(tr("&Bold"), widgetFont); 115 checkFontBold=new QCheckBox(tr("&Bold"), widgetFont);
91 checkFontBold->setGeometry(10, 145+3*(COMBO_HEIGHTS+10), 40, COMBO_HEIGHTS); 116 checkFontBold->setGeometry(10, 145+3*(COMBO_HEIGHTS+10), 40, COMBO_HEIGHTS);
92 connect(checkFontBold, SIGNAL(toggled(bool)), this, SLOT(fontClicked(bool))); 117 connect(checkFontBold, SIGNAL(toggled(bool)), this, SLOT(fontClicked(bool)));
93 checkFontItalic=new QCheckBox(tr("&Italic"), widgetFont); 118 checkFontItalic=new QCheckBox(tr("&Italic"), widgetFont);
94 checkFontItalic->setGeometry(60, 145+3*(COMBO_HEIGHTS+10), 40, COMBO_HEIGHTS); 119 checkFontItalic->setGeometry(60, 145+3*(COMBO_HEIGHTS+10), 40, COMBO_HEIGHTS);
95 connect(checkFontItalic, SIGNAL(toggled(bool)), this, SLOT(fontClicked(bool))); 120 connect(checkFontItalic, SIGNAL(toggled(bool)), this, SLOT(fontClicked(bool)));
96 121
97 buttonFontDefaults=new QPushButton(tr("&Default Font"), widgetFont); 122 buttonFontDefaults=new QPushButton(tr("&Default Font"), widgetFont);
98 buttonFontDefaults->setGeometry(115, 145+3*(COMBO_HEIGHTS+10), 110, COMBO_HEIGHTS); 123 buttonFontDefaults->setGeometry(115, 145+3*(COMBO_HEIGHTS+10), 110, COMBO_HEIGHTS);
99 connect(buttonFontDefaults, SIGNAL(clicked()), this, SLOT(slotFontDefaults())); 124 connect(buttonFontDefaults, SIGNAL(clicked()), this, SLOT(slotFontDefaults()));
100 125
101 // Alignment tab 126 // Alignment tab
102 frameAlignment=new QFrame(widgetAlignment); 127 frameAlignment=new QFrame(widgetAlignment);
103 frameAlignment->setGeometry(10, 10, 215, 145); 128 frameAlignment->setGeometry(10, 10, 215, 145);
104 frameAlignment->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); 129 frameAlignment->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
105 130
106 comboAlignmentVertical=createCombo(COMBO_VALIGN, widgetAlignment, tr("&Vertical:"), 165); 131 comboAlignmentVertical=createCombo(COMBO_VALIGN, widgetAlignment, tr("&Vertical:"), 165);
107 connect(comboAlignmentVertical, SIGNAL(activated(int)), this, SLOT(alignClicked(int))); 132 connect(comboAlignmentVertical, SIGNAL(activated(int)), this, SLOT(alignClicked(int)));
108 comboAlignmentHorizontal=createCombo(COMBO_HALIGN, widgetAlignment, tr("&Horizontal:"), 165+(COMBO_HEIGHTS+10)); 133 comboAlignmentHorizontal=createCombo(COMBO_HALIGN, widgetAlignment, tr("&Horizontal:"), 165+(COMBO_HEIGHTS+10));
109 connect(comboAlignmentHorizontal, SIGNAL(activated(int)), this, SLOT(alignClicked(int))); 134 connect(comboAlignmentHorizontal, SIGNAL(activated(int)), this, SLOT(alignClicked(int)));
110 135
@@ -247,111 +272,113 @@ void CellFormat::backgroundClicked(int index)
247 272
248void CellFormat::fontClicked(bool on) 273void CellFormat::fontClicked(bool on)
249{ 274{
250 fontClicked(0); 275 fontClicked(0);
251} 276}
252 277
253void CellFormat::fontClicked(int index) 278void CellFormat::fontClicked(int index)
254{ 279{
255 changedFont=TRUE; 280 changedFont=TRUE;
256 setTextFont(QFont(comboFontFamily->currentText(), comboFontSize->currentText().toInt(), checkFontBold->isChecked() ? QFont::Bold : QFont::Normal, checkFontItalic->isChecked(), QFont::AnyCharSet), qtColors[comboFontColor->currentItem()]); 281 setTextFont(QFont(comboFontFamily->currentText(), comboFontSize->currentText().toInt(), checkFontBold->isChecked() ? QFont::Bold : QFont::Normal, checkFontItalic->isChecked(), QFont::AnyCharSet), qtColors[comboFontColor->currentItem()]);
257} 282}
258 283
259void CellFormat::alignClicked(bool on) 284void CellFormat::alignClicked(bool on)
260{ 285{
261 alignClicked(0); 286 alignClicked(0);
262} 287}
263 288
264void CellFormat::alignClicked(int index) 289void CellFormat::alignClicked(int index)
265{ 290{
266 changedAlign=TRUE; 291 changedAlign=TRUE;
267 setTextAlign((Qt::AlignmentFlags)(flagsVAlign[comboAlignmentVertical->currentItem()] | flagsHAlign[comboAlignmentHorizontal->currentItem()] | (checkAlignmentWrap->isChecked() ? Qt::WordBreak : 0))); 292 setTextAlign((Qt::AlignmentFlags)(flagsVAlign[comboAlignmentVertical->currentItem()] | flagsHAlign[comboAlignmentHorizontal->currentItem()] | (checkAlignmentWrap->isChecked() ? Qt::WordBreak : 0)));
268} 293}
269 294
270void CellFormat::createSizeCombo(QComboBox *combo) 295void CellFormat::createSizeCombo(QComboBox *combo)
271{ 296{
272 combo->clear(); 297 combo->clear();
273 QValueList<int> sizes=fontDB.standardSizes(); 298 QValueList<int> sizes=fontDB.standardSizes();
274 for (QValueList<int>::ConstIterator i=sizes.begin(); i!=sizes.end(); ++i) 299 for (QValueList<int>::ConstIterator i=sizes.begin(); i!=sizes.end(); ++i)
275 combo->insertItem(QString::number(*i)); 300 combo->insertItem(QString::number(*i));
276} 301}
277 302
278void CellFormat::borderClicked(BorderEditor::BorderArea area) 303void CellFormat::borderClicked(BorderEditor::BorderArea area)
279{ 304{
280 QPen newPen(qtColors[comboBordersColor->currentItem()], comboBordersWidth->currentItem()+1, Qt::SolidLine); 305 QPen newPen(qtColors[comboBordersColor->currentItem()], comboBordersWidth->currentItem()+1, Qt::SolidLine);
281 if (newPen==borderEditor->getPen(area)) 306 if (newPen==borderEditor->getPen(area))
282 borderEditor->setPen(QPen(Qt::gray, 1, Qt::NoPen), area); 307 borderEditor->setPen(QPen(Qt::gray, 1, Qt::NoPen), area);
283 else 308 else
284 borderEditor->setPen(newPen, area); 309 borderEditor->setPen(newPen, area);
285} 310}
286 311
287int CellFormat::findComboItemIndex(QComboBox *combo, const QString &item) 312int CellFormat::findComboItemIndex(QComboBox *combo, const QString &item)
288{ 313{
289 for (int i=0; i<combo->count(); ++i) 314 for (int i=0; i<combo->count(); ++i)
290 if (combo->text(i)==item) 315 if (combo->text(i)==item)
291 return i; 316 return i;
292 return 0; 317 return 0;
293} 318}
294 319
295QComboBox *CellFormat::createCombo(comboType type, QWidget *parent, const QString &caption, int y) 320QComboBox *CellFormat::createCombo(comboType type, QWidget *parent,
321 const QString &caption, int y)
296{ 322{
297 QComboBox *combo=new QComboBox(FALSE, parent); 323 QComboBox *combo=new QComboBox(FALSE, parent);
298 combo->setGeometry(70, y, COMBO_WIDTHS, COMBO_HEIGHTS); 324 combo->setGeometry(70, y, COMBO_WIDTHS, COMBO_HEIGHTS);
299 combo->setSizeLimit(5); 325 combo->setSizeLimit(5);
300 326
301 switch (type) 327 switch (type)
302 { 328 {
303 case COMBO_WIDTH: createWidthCombo(combo); break; 329 case COMBO_WIDTH: createWidthCombo(combo); break;
304 case COMBO_STYLE: createStyleCombo(combo); break; 330 case COMBO_STYLE: createStyleCombo(combo); break;
305 case COMBO_FONT: createFontCombo(combo); break; 331 case COMBO_FONT: createFontCombo(combo); break;
306 case COMBO_SIZE: createSizeCombo(combo); break; 332 case COMBO_SIZE: createSizeCombo(combo); break;
307 case COMBO_COLOR: createColorCombo(combo); break; 333 case COMBO_COLOR: createColorCombo(combo); break;
308 case COMBO_HALIGN: createHAlignCombo(combo); break; 334 case COMBO_HALIGN: createHAlignCombo(combo); break;
309 case COMBO_VALIGN: createVAlignCombo(combo); break; 335 case COMBO_VALIGN: createVAlignCombo(combo); break;
336 default: break;
310 } 337 }
311 338
312 QLabel *label=new QLabel(combo, caption, parent); 339 QLabel *label=new QLabel(combo, caption, parent);
313 label->setGeometry(10, y, 50, COMBO_HEIGHTS); 340 label->setGeometry(10, y, 50, COMBO_HEIGHTS);
314 341
315 return combo; 342 return combo;
316} 343}
317 344
318void CellFormat::createHAlignCombo(QComboBox *combo) 345void CellFormat::createHAlignCombo(QComboBox *combo)
319{ 346{
320 for (int i=0; i<HALIGN_COUNT; ++i) 347 for (int i=0; i<HALIGN_COUNT; ++i)
321 combo->insertItem(namesHAlign[i]); 348 combo->insertItem(namesHAlign[i]);
322} 349}
323 350
324void CellFormat::createVAlignCombo(QComboBox *combo) 351void CellFormat::createVAlignCombo(QComboBox *combo)
325{ 352{
326 for (int i=0; i<VALIGN_COUNT; ++i) 353 for (int i=0; i<VALIGN_COUNT; ++i)
327 combo->insertItem(namesVAlign[i]); 354 combo->insertItem(namesVAlign[i]);
328} 355}
329 356
330void CellFormat::createWidthCombo(QComboBox *combo) 357void CellFormat::createWidthCombo(QComboBox *combo)
331{ 358{
332 int width=combo->listBox()->maxItemWidth(); 359 int width=combo->listBox()->maxItemWidth();
333 QPixmap pix(width, COMBO_HEIGHTS); 360 QPixmap pix(width, COMBO_HEIGHTS);
334 QPainter p(&pix); 361 QPainter p(&pix);
335 362
336 for (int i=1; i<=6; ++i) 363 for (int i=1; i<=6; ++i)
337 { 364 {
338 pix.fill(); 365 pix.fill();
339 p.setPen(QPen(Qt::black, i, Qt::SolidLine)); 366 p.setPen(QPen(Qt::black, i, Qt::SolidLine));
340 p.drawLine(5, COMBO_HEIGHTS/2, width-10, COMBO_HEIGHTS/2); 367 p.drawLine(5, COMBO_HEIGHTS/2, width-10, COMBO_HEIGHTS/2);
341 combo->insertItem(pix); 368 combo->insertItem(pix);
342 } 369 }
343} 370}
344 371
345void CellFormat::createFontCombo(QComboBox *combo) 372void CellFormat::createFontCombo(QComboBox *combo)
346{ 373{
347 combo->insertStringList(fontDB.families()); 374 combo->insertStringList(fontDB.families());
348} 375}
349 376
350void CellFormat::createStyleCombo(QComboBox *combo) 377void CellFormat::createStyleCombo(QComboBox *combo)
351{ 378{
352 int width=combo->listBox()->maxItemWidth(); 379 int width=combo->listBox()->maxItemWidth();
353 QPixmap pix(width, COMBO_HEIGHTS); 380 QPixmap pix(width, COMBO_HEIGHTS);
354 QPainter p(&pix); 381 QPainter p(&pix);
355 382
356 for (int i=0; i<STYLE_COUNT; ++i) 383 for (int i=0; i<STYLE_COUNT; ++i)
357 { 384 {
@@ -450,97 +477,97 @@ int CellFormat::exec(Sheet *s)
450 sheet->setPen(row1-1, col, 0, penTop); 477 sheet->setPen(row1-1, col, 0, penTop);
451 if (penBottom!=penDefault) 478 if (penBottom!=penDefault)
452 for (col=col1; col<=col2; ++col) 479 for (col=col1; col<=col2; ++col)
453 sheet->setPen(row2, col, 0, penBottom); 480 sheet->setPen(row2, col, 0, penBottom);
454 if (penLeft!=penDefault) 481 if (penLeft!=penDefault)
455 for (row=row1; row<=row2; ++row) 482 for (row=row1; row<=row2; ++row)
456 sheet->setPen(row, col1-1, 1, penLeft); 483 sheet->setPen(row, col1-1, 1, penLeft);
457 if (penRight!=penDefault) 484 if (penRight!=penDefault)
458 for (row=row1; row<=row2; ++row) 485 for (row=row1; row<=row2; ++row)
459 sheet->setPen(row, col2, 1, penRight); 486 sheet->setPen(row, col2, 1, penRight);
460 if (penVert!=penDefault) 487 if (penVert!=penDefault)
461 for (row=row1; row<=row2; ++row) 488 for (row=row1; row<=row2; ++row)
462 for (col=col1; col<col2; ++col) 489 for (col=col1; col<col2; ++col)
463 sheet->setPen(row, col, 1, penVert); 490 sheet->setPen(row, col, 1, penVert);
464 if (penHorz!=penDefault) 491 if (penHorz!=penDefault)
465 for (row=row1; row<row2; ++row) 492 for (row=row1; row<row2; ++row)
466 for (col=col1; col<=col2; ++col) 493 for (col=col1; col<=col2; ++col)
467 sheet->setPen(row, col, 0, penHorz); 494 sheet->setPen(row, col, 0, penHorz);
468 495
469 if (changedBrush) 496 if (changedBrush)
470 { 497 {
471 for (row=row1; row<=row2; ++row) 498 for (row=row1; row<=row2; ++row)
472 for (col=col1; col<=col2; ++col) 499 for (col=col1; col<=col2; ++col)
473 sheet->setBrush(row, col, brushBackground); 500 sheet->setBrush(row, col, brushBackground);
474 } 501 }
475 502
476 if (changedAlign) 503 if (changedAlign)
477 { 504 {
478 for (row=row1; row<=row2; ++row) 505 for (row=row1; row<=row2; ++row)
479 for (col=col1; col<=col2; ++col) 506 for (col=col1; col<=col2; ++col)
480 sheet->setTextAlign(row, col, textAlignment); 507 sheet->setTextAlign(row, col, textAlignment);
481 } 508 }
482 509
483 if (changedFont) 510 if (changedFont)
484 { 511 {
485 for (row=row1; row<=row2; ++row) 512 for (row=row1; row<=row2; ++row)
486 for (col=col1; col<=col2; ++col) 513 for (col=col1; col<=col2; ++col)
487 sheet->setTextFont(row, col, fontFont, fontColor); 514 sheet->setTextFont(row, col, fontFont, fontColor);
488 } 515 }
489 return QDialog::Accepted; 516 return QDialog::Accepted;
490 } 517 }
491 return QDialog::Rejected; 518 return QDialog::Rejected;
492} 519}
493 520
494// 521//
495// Border Editor 522// Border Editor
496// 523//
497 524
498BorderEditor::BorderEditor(QWidget *parent=0) 525BorderEditor::BorderEditor(QWidget *parent)
499 :QFrame(parent) 526 :QFrame(parent)
500{ 527{
501 setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); 528 setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
502} 529}
503 530
504BorderEditor::~BorderEditor() 531BorderEditor::~BorderEditor()
505{ 532{
506} 533}
507 534
508void BorderEditor::drawContents(QPainter *p) 535void BorderEditor::drawContents(QPainter *p)
509{ 536{
510 QFrame::drawContents(p); 537 QFrame::drawContents(p);
511 538
512 int x=contentsRect().x(), y=contentsRect().y(), width=contentsRect().width()/3, height=contentsRect().height()/3; 539 int x=contentsRect().x(), y=contentsRect().y(), width=contentsRect().width()/3, height=contentsRect().height()/3;
513 int lineFirstX=x+width/6, lineFirstY=y+height/6, lineLastX=contentsRect().right()-width/6, lineLastY=contentsRect().bottom()-height/6; 540 int lineFirstX=x+width/6, lineFirstY=y+height/6, lineLastX=contentsRect().right()-width/6, lineLastY=contentsRect().bottom()-height/6;
514 541
515 p->fillRect(contentsRect(), Qt::white); 542 p->fillRect(contentsRect(), Qt::white);
516 543
517 p->fillRect(x+width/3, y+height/3, width, height, Qt::gray); 544 p->fillRect(x+width/3, y+height/3, width, height, Qt::gray);
518 p->fillRect(x+(5*width/3), y+height/3, width, height, Qt::gray); 545 p->fillRect(x+(5*width/3), y+height/3, width, height, Qt::gray);
519 p->fillRect(x+width/3, y+(5*height)/3, width, height, Qt::gray); 546 p->fillRect(x+width/3, y+(5*height)/3, width, height, Qt::gray);
520 p->fillRect(x+(5*width)/3, y+(5*height)/3, width, height, Qt::gray); 547 p->fillRect(x+(5*width)/3, y+(5*height)/3, width, height, Qt::gray);
521 548
522 if (penTop.width()>0) 549 if (penTop.width()>0)
523 { 550 {
524 p->setPen(penTop); 551 p->setPen(penTop);
525 p->drawLine(lineFirstX, lineFirstY, lineLastX, lineFirstY); 552 p->drawLine(lineFirstX, lineFirstY, lineLastX, lineFirstY);
526 } 553 }
527 if (penBottom.width()>0) 554 if (penBottom.width()>0)
528 { 555 {
529 p->setPen(penBottom); 556 p->setPen(penBottom);
530 p->drawLine(lineFirstX, lineLastY, lineLastX, lineLastY); 557 p->drawLine(lineFirstX, lineLastY, lineLastX, lineLastY);
531 } 558 }
532 if (penHorz.width()>0) 559 if (penHorz.width()>0)
533 { 560 {
534 p->setPen(penHorz); 561 p->setPen(penHorz);
535 p->drawLine(lineFirstX, y+contentsRect().height()/2, lineLastX, y+contentsRect().height()/2); 562 p->drawLine(lineFirstX, y+contentsRect().height()/2, lineLastX, y+contentsRect().height()/2);
536 } 563 }
537 if (penLeft.width()>0) 564 if (penLeft.width()>0)
538 { 565 {
539 p->setPen(penLeft); 566 p->setPen(penLeft);
540 p->drawLine(lineFirstX, lineFirstY, lineFirstX, lineLastY); 567 p->drawLine(lineFirstX, lineFirstY, lineFirstX, lineLastY);
541 } 568 }
542 if (penRight.width()>0) 569 if (penRight.width()>0)
543 { 570 {
544 p->setPen(penRight); 571 p->setPen(penRight);
545 p->drawLine(lineLastX, lineFirstY, lineLastX, lineLastY); 572 p->drawLine(lineLastX, lineFirstY, lineLastX, lineLastY);
546 } 573 }
diff --git a/noncore/apps/opie-sheet/finddlg.cpp b/noncore/apps/opie-sheet/finddlg.cpp
index d1237ca..e4c6ec8 100644
--- a/noncore/apps/opie-sheet/finddlg.cpp
+++ b/noncore/apps/opie-sheet/finddlg.cpp
@@ -1,67 +1,67 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qradiobutton.h> 16#include <qradiobutton.h>
17#include "finddlg.h" 17#include "finddlg.h"
18 18
19FindDialog::FindDialog(QWidget *parent=0) 19FindDialog::FindDialog(QWidget *parent)
20 :QDialog(parent, 0, TRUE) 20 :QDialog(parent, 0, TRUE)
21{ 21{
22 // Main widget 22 // Main widget
23 tabs=new QTabWidget(this); 23 tabs=new QTabWidget(this);
24 widgetFind=new QWidget(tabs); 24 widgetFind=new QWidget(tabs);
25 widgetOptions=new QWidget(tabs); 25 widgetOptions=new QWidget(tabs);
26 tabs->addTab(widgetFind, tr("&Find && Replace")); 26 tabs->addTab(widgetFind, tr("&Find && Replace"));
27 tabs->addTab(widgetOptions, tr("&Options")); 27 tabs->addTab(widgetOptions, tr("&Options"));
28 28
29 // Find tab 29 // Find tab
30 QLabel *label=new QLabel(tr("&Search for:"), widgetFind); 30 QLabel *label=new QLabel(tr("&Search for:"), widgetFind);
31 label->setGeometry(10, 10, 215, 20); 31 label->setGeometry(10, 10, 215, 20);
32 editFind=new QLineEdit(widgetFind); 32 editFind=new QLineEdit(widgetFind);
33 editFind->setGeometry(10, 40, 215, 20); 33 editFind->setGeometry(10, 40, 215, 20);
34 label->setBuddy(editFind); 34 label->setBuddy(editFind);
35 35
36 label=new QLabel(tr("&Replace with:"), widgetFind); 36 label=new QLabel(tr("&Replace with:"), widgetFind);
37 label->setGeometry(10, 80, 215, 20); 37 label->setGeometry(10, 80, 215, 20);
38 editReplace=new QLineEdit(widgetFind); 38 editReplace=new QLineEdit(widgetFind);
39 editReplace->setGeometry(10, 110, 215, 20); 39 editReplace->setGeometry(10, 110, 215, 20);
40 editReplace->setEnabled(FALSE); 40 editReplace->setEnabled(FALSE);
41 label->setBuddy(editReplace); 41 label->setBuddy(editReplace);
42 42
43 groupType=new QVButtonGroup(tr("&Type"), widgetFind); 43 groupType=new QVButtonGroup(tr("&Type"), widgetFind);
44 groupType->setGeometry(10, 150, 215, 90); 44 groupType->setGeometry(10, 150, 215, 90);
45 QRadioButton *radio=new QRadioButton(tr("&Find"), groupType); 45 QRadioButton *radio=new QRadioButton(tr("&Find"), groupType);
46 radio=new QRadioButton(tr("&Replace"), groupType); 46 radio=new QRadioButton(tr("&Replace"), groupType);
47 radio=new QRadioButton(tr("Replace &all"), groupType); 47 radio=new QRadioButton(tr("Replace &all"), groupType);
48 groupType->setButton(0); 48 groupType->setButton(0);
49 connect(groupType, SIGNAL(clicked(int)), this, SLOT(typeChanged(int))); 49 connect(groupType, SIGNAL(clicked(int)), this, SLOT(typeChanged(int)));
50 50
51 // Options tab 51 // Options tab
52 checkCase=new QCheckBox(tr("Match &case"), widgetOptions); 52 checkCase=new QCheckBox(tr("Match &case"), widgetOptions);
53 checkCase->setGeometry(10, 10, 215, 20); 53 checkCase->setGeometry(10, 10, 215, 20);
54 checkSelection=new QCheckBox(tr("Current &selection only"), widgetOptions); 54 checkSelection=new QCheckBox(tr("Current &selection only"), widgetOptions);
55 checkSelection->setGeometry(10, 40, 215, 20); 55 checkSelection->setGeometry(10, 40, 215, 20);
56 checkEntire=new QCheckBox(tr("&Entire cell"), widgetOptions); 56 checkEntire=new QCheckBox(tr("&Entire cell"), widgetOptions);
57 checkEntire->setGeometry(10, 70, 215, 20); 57 checkEntire->setGeometry(10, 70, 215, 20);
58 58
59 // Main widget 59 // Main widget
60 box=new QVBoxLayout(this); 60 box=new QVBoxLayout(this);
61 box->addWidget(tabs); 61 box->addWidget(tabs);
62 62
63 setCaption(tr("Find & Replace")); 63 setCaption(tr("Find & Replace"));
64} 64}
65 65
66FindDialog::~FindDialog() 66FindDialog::~FindDialog()
67{ 67{
diff --git a/noncore/apps/opie-sheet/mainwindow.cpp b/noncore/apps/opie-sheet/mainwindow.cpp
index 09ee68b..2f07bae 100644
--- a/noncore/apps/opie-sheet/mainwindow.cpp
+++ b/noncore/apps/opie-sheet/mainwindow.cpp
@@ -121,97 +121,97 @@ void MainWindow::documentOpen(const DocLnk &lnkDoc)
121 documentModified=FALSE; 121 documentModified=FALSE;
122 selectorFileNew(DocLnk()); 122 selectorFileNew(DocLnk());
123 return; 123 return;
124 } 124 }
125 QDataStream stream(streamBuffer, IO_ReadOnly); 125 QDataStream stream(streamBuffer, IO_ReadOnly);
126 126
127 Q_UINT32 countSheet, countCell, i, j, row, col, alignment; 127 Q_UINT32 countSheet, countCell, i, j, row, col, alignment;
128 typeSheet *newSheet; 128 typeSheet *newSheet;
129 typeCellData *newCell; 129 typeCellData *newCell;
130 130
131 char fileFormat[7]; 131 char fileFormat[7];
132 stream.readRawBytes(fileFormat, 6); 132 stream.readRawBytes(fileFormat, 6);
133 fileFormat[6]=0; 133 fileFormat[6]=0;
134 if ((QString)fileFormat!="SQT100") 134 if ((QString)fileFormat!="SQT100")
135 { 135 {
136 QMessageBox::critical(this, tr("Error"), tr("Invalid file format!")); 136 QMessageBox::critical(this, tr("Error"), tr("Invalid file format!"));
137 documentModified=FALSE; 137 documentModified=FALSE;
138 selectorFileNew(DocLnk()); 138 selectorFileNew(DocLnk());
139 return; 139 return;
140 } 140 }
141 141
142 stream >> countSheet; 142 stream >> countSheet;
143 for (i=0; i<countSheet; ++i) 143 for (i=0; i<countSheet; ++i)
144 { 144 {
145 newSheet=new typeSheet; 145 newSheet=new typeSheet;
146 newSheet->data.setAutoDelete(TRUE); 146 newSheet->data.setAutoDelete(TRUE);
147 stream >> newSheet->name >> countCell; 147 stream >> newSheet->name >> countCell;
148 comboSheets->insertItem(newSheet->name); 148 comboSheets->insertItem(newSheet->name);
149 149
150 for (j=0; j<countCell; ++j) 150 for (j=0; j<countCell; ++j)
151 { 151 {
152 newCell=new typeCellData; 152 newCell=new typeCellData;
153 stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data; 153 stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data;
154 newCell->col=col; 154 newCell->col=col;
155 newCell->row=row; 155 newCell->row=row;
156 newCell->alignment=(Qt::AlignmentFlags)alignment; 156 newCell->alignment=(Qt::AlignmentFlags)alignment;
157 newSheet->data.append(newCell); 157 newSheet->data.append(newCell);
158 } 158 }
159 listSheets.append(newSheet); 159 listSheets.append(newSheet);
160 160
161 if (i==0) 161 if (i==0)
162 { 162 {
163 sheet->setName(newSheet->name); 163 sheet->setName(newSheet->name);
164 sheet->setSheetData(&newSheet->data); 164 sheet->setSheetData(&newSheet->data);
165 } 165 }
166 } 166 }
167} 167}
168 168
169int MainWindow::saveCurrentFile(bool ask=TRUE) 169int MainWindow::saveCurrentFile(bool ask)
170{ 170{
171 if (ask) 171 if (ask)
172 { 172 {
173 int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); 173 int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel);
174 if (result!=QMessageBox::Yes) return result; 174 if (result!=QMessageBox::Yes) return result;
175 } 175 }
176 176
177 if (!currentDoc->isValid()) 177 if (!currentDoc->isValid())
178 { 178 {
179 TextDialog dialogText(this); 179 TextDialog dialogText(this);
180 if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel; 180 if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel;
181 181
182 currentDoc->setName(dialogText.getValue()); 182 currentDoc->setName(dialogText.getValue());
183 currentDoc->setFile(QString::null); 183 currentDoc->setFile(QString::null);
184 currentDoc->setLinkFile(QString::null); 184 currentDoc->setLinkFile(QString::null);
185 } 185 }
186 186
187 documentSave(currentDoc); 187 documentSave(currentDoc);
188 return QMessageBox::Yes; 188 return QMessageBox::Yes;
189} 189}
190 190
191void MainWindow::selectorFileNew(const DocLnk &lnkDoc) 191void MainWindow::selectorFileNew(const DocLnk &lnkDoc)
192{ 192{
193 selectorHide(); 193 selectorHide();
194 194
195 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; 195 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return;
196 if (currentDoc) delete currentDoc; 196 if (currentDoc) delete currentDoc;
197 currentDoc = new DocLnk(lnkDoc); 197 currentDoc = new DocLnk(lnkDoc);
198 listSheets.clear(); 198 listSheets.clear();
199 comboSheets->clear(); 199 comboSheets->clear();
200 200
201 typeSheet *newSheet=createNewSheet(); 201 typeSheet *newSheet=createNewSheet();
202 newSheet->data.setAutoDelete(TRUE); 202 newSheet->data.setAutoDelete(TRUE);
203 sheet->setName(newSheet->name); 203 sheet->setName(newSheet->name);
204 sheet->setSheetData(&newSheet->data); 204 sheet->setSheetData(&newSheet->data);
205 for (int i=1; i<DEFAULT_NUM_SHEETS; ++i) 205 for (int i=1; i<DEFAULT_NUM_SHEETS; ++i)
206 createNewSheet(); 206 createNewSheet();
207 documentModified=FALSE; 207 documentModified=FALSE;
208} 208}
209 209
210void MainWindow::closeEvent(QCloseEvent *e) 210void MainWindow::closeEvent(QCloseEvent *e)
211{ 211{
212 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore(); 212 if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore();
213 else e->accept(); 213 else e->accept();
214} 214}
215 215
216void MainWindow::selectorFileOpen(const DocLnk &lnkDoc) 216void MainWindow::selectorFileOpen(const DocLnk &lnkDoc)
217{ 217{
diff --git a/noncore/apps/opie-sheet/numberdlg.cpp b/noncore/apps/opie-sheet/numberdlg.cpp
index e8de639..90fbaa2 100644
--- a/noncore/apps/opie-sheet/numberdlg.cpp
+++ b/noncore/apps/opie-sheet/numberdlg.cpp
@@ -1,49 +1,50 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include "numberdlg.h" 15#include "numberdlg.h"
16 16
17NumberDialog::NumberDialog(QWidget *parent=0) 17NumberDialog::NumberDialog(QWidget *parent)
18 :QDialog(parent, 0, TRUE) 18 :QDialog(parent, 0, TRUE)
19{ 19{
20 edit=new QSpinBox(this); 20 edit=new QSpinBox(this);
21 edit->setGeometry(120, 10, 70, 25); 21 edit->setGeometry(120, 10, 70, 25);
22 22
23 label=new QLabel(this); 23 label=new QLabel(this);
24 label->setGeometry(10, 10, 100, 25); 24 label->setGeometry(10, 10, 100, 25);
25 label->setBuddy(edit); 25 label->setBuddy(edit);
26 26
27 resize(200, 45); 27 resize(200, 45);
28} 28}
29 29
30NumberDialog::~NumberDialog() 30NumberDialog::~NumberDialog()
31{ 31{
32} 32}
33 33
34int NumberDialog::exec(const QString &caption, const QString &text, int value=1, int min=1, int max=99, int step=1) 34int NumberDialog::exec(const QString &caption, const QString &text,
35 int value, int min, int max, int step)
35{ 36{
36 setCaption(caption); 37 setCaption(caption);
37 label->setText(text); 38 label->setText(text);
38 edit->setValue(value); 39 edit->setValue(value);
39 edit->setMinValue(min); 40 edit->setMinValue(min);
40 edit->setMaxValue(max); 41 edit->setMaxValue(max);
41 edit->setLineStep(step); 42 edit->setLineStep(step);
42 43
43 return QDialog::exec(); 44 return QDialog::exec();
44} 45}
45 46
46int NumberDialog::getValue() 47int NumberDialog::getValue()
47{ 48{
48 return edit->value(); 49 return edit->value();
49} 50}
diff --git a/noncore/apps/opie-sheet/sheet.cpp b/noncore/apps/opie-sheet/sheet.cpp
index 1d7ec6f..2279191 100644
--- a/noncore/apps/opie-sheet/sheet.cpp
+++ b/noncore/apps/opie-sheet/sheet.cpp
@@ -62,135 +62,135 @@ void Sheet::slotCellSelected(int row, int col)
62 if (cellData) 62 if (cellData)
63 emit currentDataChanged(cellData->data); 63 emit currentDataChanged(cellData->data);
64 else 64 else
65 emit currentDataChanged(""); 65 emit currentDataChanged("");
66} 66}
67 67
68typeCellData *Sheet::createCellData(int row, int col) 68typeCellData *Sheet::createCellData(int row, int col)
69{ 69{
70 if (row<0 || col<0) return NULL; 70 if (row<0 || col<0) return NULL;
71 typeCellData *cellData=new typeCellData; 71 typeCellData *cellData=new typeCellData;
72 cellData->row=row; 72 cellData->row=row;
73 cellData->col=col; 73 cellData->col=col;
74 cellData->data=defaultCellData.data; 74 cellData->data=defaultCellData.data;
75 cellData->borders=defaultCellData.borders; 75 cellData->borders=defaultCellData.borders;
76 cellData->alignment=defaultCellData.alignment; 76 cellData->alignment=defaultCellData.alignment;
77 cellData->font=defaultCellData.font; 77 cellData->font=defaultCellData.font;
78 cellData->fontColor=defaultCellData.fontColor; 78 cellData->fontColor=defaultCellData.fontColor;
79 cellData->background=defaultCellData.background; 79 cellData->background=defaultCellData.background;
80 sheetData.append(cellData); 80 sheetData.append(cellData);
81 return cellData; 81 return cellData;
82} 82}
83 83
84void Sheet::slotCellChanged(int row, int col) 84void Sheet::slotCellChanged(int row, int col)
85{ 85{
86 typeCellData *cellData=findCellData(row, col); 86 typeCellData *cellData=findCellData(row, col);
87 if (!cellData) cellData=createCellData(row, col); 87 if (!cellData) cellData=createCellData(row, col);
88 if (cellData) cellData->data=text(row, col); 88 if (cellData) cellData->data=text(row, col);
89 for (cellData=sheetData.first(); cellData; cellData=sheetData.next()) 89 for (cellData=sheetData.first(); cellData; cellData=sheetData.next())
90 setText(cellData->row, cellData->col, dataParser(cellData->data)); 90 setText(cellData->row, cellData->col, dataParser(cellData->data));
91 emit sheetModified(); 91 emit sheetModified();
92} 92}
93 93
94void Sheet::swapCells(int row1, int col1, int row2, int col2) 94void Sheet::swapCells(int row1, int col1, int row2, int col2)
95{ 95{
96 typeCellData *cellData1=findCellData(row1, col1), *cellData2=findCellData(row2, col2); 96 typeCellData *cellData1=findCellData(row1, col1), *cellData2=findCellData(row2, col2);
97 if (!cellData1) cellData1=createCellData(row1, col1); 97 if (!cellData1) cellData1=createCellData(row1, col1);
98 if (!cellData2) cellData2=createCellData(row2, col2); 98 if (!cellData2) cellData2=createCellData(row2, col2);
99 if (cellData1 && cellData2) 99 if (cellData1 && cellData2)
100 { 100 {
101 QString tempData(cellData1->data); 101 QString tempData(cellData1->data);
102 cellData1->data=cellData2->data; 102 cellData1->data=cellData2->data;
103 cellData2->data=tempData; 103 cellData2->data=tempData;
104 setText(cellData1->row, cellData1->col, dataParser(cellData1->data)); 104 setText(cellData1->row, cellData1->col, dataParser(cellData1->data));
105 setText(cellData2->row, cellData2->col, dataParser(cellData2->data)); 105 setText(cellData2->row, cellData2->col, dataParser(cellData2->data));
106 emit sheetModified(); 106 emit sheetModified();
107 } 107 }
108} 108}
109 109
110QString Sheet::getParameter(const QString &parameters, int paramNo, bool giveError=FALSE, const QString funcName="") 110QString Sheet::getParameter(const QString &parameters, int paramNo, bool giveError, const QString funcName)
111{ 111{
112 QString params(parameters); 112 QString params(parameters);
113 int position; 113 int position;
114 for (int i=0; i<paramNo; ++i) 114 for (int i=0; i<paramNo; ++i)
115 { 115 {
116 position=params.find(','); 116 position=params.find(',');
117 if (position<0) 117 if (position<0)
118 { 118 {
119 if (giveError) QMessageBox::critical(this, tr("Error"), tr("Too few arguments to function '"+funcName+'\'')); 119 if (giveError) QMessageBox::critical(this, tr("Error"), tr("Too few arguments to function '"+funcName+'\''));
120 return QString(); 120 return QString();
121 } 121 }
122 params=params.mid(position+1); 122 params=params.mid(position+1);
123 } 123 }
124 position=params.find(','); 124 position=params.find(',');
125 if (position<0) return params; 125 if (position<0) return params;
126 return params.left(position); 126 return params.left(position);
127} 127}
128 128
129bool Sheet::findRange(const QString &variable1, const QString &variable2, int *row1, int *col1, int *row2, int *col2) 129bool Sheet::findRange(const QString &variable1, const QString &variable2, int *row1, int *col1, int *row2, int *col2)
130{ 130{
131 int row, col; 131 int row, col;
132 if (!findRowColumn(variable1, row1, col1, TRUE) || !findRowColumn(variable2, row2, col2, TRUE)) return FALSE; 132 if (!findRowColumn(variable1, row1, col1, TRUE) || !findRowColumn(variable2, row2, col2, TRUE)) return FALSE;
133 if (*row1>*row2) 133 if (*row1>*row2)
134 { 134 {
135 row=*row1; 135 row=*row1;
136 *row1=*row2; 136 *row1=*row2;
137 *row2=row; 137 *row2=row;
138 } 138 }
139 if (*col1>*col2) 139 if (*col1>*col2)
140 { 140 {
141 col=*col1; 141 col=*col1;
142 *col1=*col2; 142 *col1=*col2;
143 *col2=col; 143 *col2=col;
144 } 144 }
145 return TRUE; 145 return TRUE;
146} 146}
147 147
148bool Sheet::findRowColumn(const QString &variable, int *row, int *col, bool giveError=FALSE) 148bool Sheet::findRowColumn(const QString &variable, int *row, int *col, bool giveError)
149{ 149{
150 int position=variable.find(QRegExp("\\d")); 150 int position=variable.find(QRegExp("\\d"));
151 if (position<1) 151 if (position<1)
152 { 152 {
153 if (giveError) QMessageBox::critical(this, tr("Error"), tr("Invalid variable: '"+variable+'\'')); 153 if (giveError) QMessageBox::critical(this, tr("Error"), tr("Invalid variable: '"+variable+'\''));
154 return FALSE; 154 return FALSE;
155 } 155 }
156 *row=variable.mid(position).toInt()-1; 156 *row=variable.mid(position).toInt()-1;
157 *col=getHeaderColumn(variable.left(position))-1; 157 *col=getHeaderColumn(variable.left(position))-1;
158 return TRUE; 158 return TRUE;
159} 159}
160 160
161double Sheet::calculateVariable(const QString &variable) 161double Sheet::calculateVariable(const QString &variable)
162{ 162{
163 bool ok; 163 bool ok;
164 double tempResult=variable.toDouble(&ok); 164 double tempResult=variable.toDouble(&ok);
165 if (ok) return tempResult; 165 if (ok) return tempResult;
166 166
167 int row, col; 167 int row, col;
168 return (findRowColumn(variable, &row, &col, TRUE) ? text(row, col).toDouble() : 0); 168 return (findRowColumn(variable, &row, &col, TRUE) ? text(row, col).toDouble() : 0);
169} 169}
170 170
171double Sheet::functionSum(const QString &param1, const QString &param2) 171double Sheet::functionSum(const QString &param1, const QString &param2)
172{ 172{
173 int row1, col1, row2, col2, row, col; 173 int row1, col1, row2, col2, row, col;
174 if (!findRange(param1, param2, &row1, &col1, &row2, &col2)) return 0; 174 if (!findRange(param1, param2, &row1, &col1, &row2, &col2)) return 0;
175 175
176 double result=0, tempResult; 176 double result=0, tempResult;
177 bool ok; 177 bool ok;
178 for (row=row1; row<=row2; ++row) 178 for (row=row1; row<=row2; ++row)
179 for (col=col1; col<=col2; ++col) 179 for (col=col1; col<=col2; ++col)
180 { 180 {
181 tempResult=text(row, col).toDouble(&ok); 181 tempResult=text(row, col).toDouble(&ok);
182 if (ok) result+=tempResult; 182 if (ok) result+=tempResult;
183 } 183 }
184 184
185 return result; 185 return result;
186} 186}
187 187
188double Sheet::functionMin(const QString &param1, const QString &param2) 188double Sheet::functionMin(const QString &param1, const QString &param2)
189{ 189{
190 int row1, col1, row2, col2, row, col; 190 int row1, col1, row2, col2, row, col;
191 if (!findRange(param1, param2, &row1, &col1, &row2, &col2)) return 0; 191 if (!findRange(param1, param2, &row1, &col1, &row2, &col2)) return 0;
192 192
193 double min=0, tempMin; 193 double min=0, tempMin;
194 bool ok, init=FALSE; 194 bool ok, init=FALSE;
195 for (row=row1; row<=row2; ++row) 195 for (row=row1; row<=row2; ++row)
196 for (col=col1; col<=col2; ++col) 196 for (col=col1; col<=col2; ++col)
@@ -407,97 +407,97 @@ QString Sheet::dataParserHelper(const QString &data)
407 if (!tempElement.isEmpty()) pushStringStack(&stackElements, tempElement); 407 if (!tempElement.isEmpty()) pushStringStack(&stackElements, tempElement);
408 while (!stackOperators.isEmpty()) 408 while (!stackOperators.isEmpty())
409 { 409 {
410 secondElement=popStringStack(&stackElements); 410 secondElement=popStringStack(&stackElements);
411 firstElement=popStringStack(&stackElements); 411 firstElement=popStringStack(&stackElements);
412 pushStringStack(&stackElements, QString::number(calculateFunction(popCharStack(&stackOperators), firstElement+","+secondElement))); 412 pushStringStack(&stackElements, QString::number(calculateFunction(popCharStack(&stackOperators), firstElement+","+secondElement)));
413 } 413 }
414 414
415 if (!stackElements.isEmpty()) 415 if (!stackElements.isEmpty())
416 tempElement=popStringStack(&stackElements); 416 tempElement=popStringStack(&stackElements);
417 while (!stackElements.isEmpty()) 417 while (!stackElements.isEmpty())
418 tempElement.prepend(popStringStack(&stackElements)+","); 418 tempElement.prepend(popStringStack(&stackElements)+",");
419 return tempElement; 419 return tempElement;
420} 420}
421 421
422QString Sheet::dataParser(const QString &data) 422QString Sheet::dataParser(const QString &data)
423{ 423{
424 QString strippedData(data); 424 QString strippedData(data);
425 strippedData.replace(QRegExp("\\s"), ""); 425 strippedData.replace(QRegExp("\\s"), "");
426 if (strippedData.isEmpty() || strippedData[0]!='=') return data; 426 if (strippedData.isEmpty() || strippedData[0]!='=') return data;
427 strippedData=dataParserHelper(strippedData.remove(0, 1).upper().replace(QRegExp(":"), ",")); 427 strippedData=dataParserHelper(strippedData.remove(0, 1).upper().replace(QRegExp(":"), ","));
428 428
429 int i=0; 429 int i=0;
430 QString tempParameter(getParameter(strippedData, i)), result=""; 430 QString tempParameter(getParameter(strippedData, i)), result="";
431 do 431 do
432 { 432 {
433 result+=","+QString::number(calculateVariable(tempParameter)); 433 result+=","+QString::number(calculateVariable(tempParameter));
434 tempParameter=getParameter(strippedData, ++i); 434 tempParameter=getParameter(strippedData, ++i);
435 } 435 }
436 while (!tempParameter.isNull()); 436 while (!tempParameter.isNull());
437 return result.mid(1); 437 return result.mid(1);
438} 438}
439 439
440void Sheet::setData(const QString &data) 440void Sheet::setData(const QString &data)
441{ 441{
442 setText(currentRow(), currentColumn(), data); 442 setText(currentRow(), currentColumn(), data);
443 slotCellChanged(currentRow(), currentColumn()); 443 slotCellChanged(currentRow(), currentColumn());
444 activateNextCell(); 444 activateNextCell();
445} 445}
446 446
447QString Sheet::getData() 447QString Sheet::getData()
448{ 448{
449 typeCellData *cellData=findCellData(currentRow(), currentColumn()); 449 typeCellData *cellData=findCellData(currentRow(), currentColumn());
450 if (cellData) 450 if (cellData)
451 return cellData->data; 451 return cellData->data;
452 return ""; 452 return "";
453} 453}
454 454
455void Sheet::lockClicks(bool lock=TRUE) 455void Sheet::lockClicks(bool lock)
456{ 456{
457 clicksLocked=lock; 457 clicksLocked=lock;
458} 458}
459 459
460void Sheet::paintCell(QPainter *p, int row, int col, const QRect & cr, bool selected) 460void Sheet::paintCell(QPainter *p, int row, int col, const QRect & cr, bool selected)
461{ 461{
462 if (selected && row==currentRow() && col==currentColumn()) selected=FALSE; 462 if (selected && row==currentRow() && col==currentColumn()) selected=FALSE;
463 463
464 int sheetDataCurrent=sheetData.at(); 464 int sheetDataCurrent=sheetData.at();
465 typeCellData *cellData=findCellData(row, col); 465 typeCellData *cellData=findCellData(row, col);
466 if (sheetDataCurrent>=0) sheetData.at(sheetDataCurrent); 466 if (sheetDataCurrent>=0) sheetData.at(sheetDataCurrent);
467 if (!cellData) cellData=&defaultCellData; 467 if (!cellData) cellData=&defaultCellData;
468 if (selected) 468 if (selected)
469 p->fillRect(0, 0, cr.width(), cr.height(), colorGroup().highlight()); 469 p->fillRect(0, 0, cr.width(), cr.height(), colorGroup().highlight());
470 else 470 else
471 { 471 {
472 p->fillRect(0, 0, cr.width(), cr.height(), colorGroup().base()); 472 p->fillRect(0, 0, cr.width(), cr.height(), colorGroup().base());
473 p->fillRect(0, 0, cr.width(), cr.height(), cellData->background); 473 p->fillRect(0, 0, cr.width(), cr.height(), cellData->background);
474 } 474 }
475 475
476 QTableItem *cellItem=item(row, col); 476 QTableItem *cellItem=item(row, col);
477 if (cellItem) 477 if (cellItem)
478 { 478 {
479 p->setPen(selected ? colorGroup().highlightedText() : cellData->fontColor); 479 p->setPen(selected ? colorGroup().highlightedText() : cellData->fontColor);
480 p->setFont(cellData->font); 480 p->setFont(cellData->font);
481 p->drawText(2, 2, cr.width()-4, cr.height()-4, cellData->alignment, cellItem->text()); 481 p->drawText(2, 2, cr.width()-4, cr.height()-4, cellData->alignment, cellItem->text());
482 } 482 }
483 483
484 int rx=cr.width()-1, ry=cr.height()-1; 484 int rx=cr.width()-1, ry=cr.height()-1;
485 QPen pen(p->pen()); 485 QPen pen(p->pen());
486 p->setPen(cellData->borders.right); 486 p->setPen(cellData->borders.right);
487 p->drawLine(rx, 0, rx, ry); 487 p->drawLine(rx, 0, rx, ry);
488 p->setPen(cellData->borders.bottom); 488 p->setPen(cellData->borders.bottom);
489 p->drawLine(0, ry, rx, ry); 489 p->drawLine(0, ry, rx, ry);
490 p->setPen(pen); 490 p->setPen(pen);
491} 491}
492 492
493void Sheet::viewportMousePressEvent(QMouseEvent *e) 493void Sheet::viewportMousePressEvent(QMouseEvent *e)
494{ 494{
495 QMouseEvent ce(e->type(), viewportToContents(e->pos()), e->globalPos(), e->button(), e->state()); 495 QMouseEvent ce(e->type(), viewportToContents(e->pos()), e->globalPos(), e->button(), e->state());
496 if (clicksLocked) 496 if (clicksLocked)
497 { 497 {
498 if (selectionNo<0) 498 if (selectionNo<0)
499 { 499 {
500 clearSelection(); 500 clearSelection();
501 QTableSelection newSelection; 501 QTableSelection newSelection;
502 newSelection.init(rowAt(ce.pos().y()), columnAt(ce.pos().x())); 502 newSelection.init(rowAt(ce.pos().y()), columnAt(ce.pos().x()));
503 newSelection.expandTo(newSelection.anchorRow(), newSelection.anchorCol()); 503 newSelection.expandTo(newSelection.anchorRow(), newSelection.anchorCol());
@@ -691,170 +691,170 @@ void Sheet::getSelection(int *row1, int *col1, int *row2, int *col2)
691 *col1=*col2=currentColumn(); 691 *col1=*col2=currentColumn();
692 } 692 }
693} 693}
694 694
695void Sheet::editClear() 695void Sheet::editClear()
696{ 696{
697 int row1, row2, col1, col2; 697 int row1, row2, col1, col2;
698 getSelection(&row1, &col1, &row2, &col2); 698 getSelection(&row1, &col1, &row2, &col2);
699 699
700 int row, col; 700 int row, col;
701 for (row=row1; row<=row2; ++row) 701 for (row=row1; row<=row2; ++row)
702 for (col=col1; col<=col2; ++col) 702 for (col=col1; col<=col2; ++col)
703 { 703 {
704 setText(row, col, ""); 704 setText(row, col, "");
705 slotCellChanged(row, col); 705 slotCellChanged(row, col);
706 } 706 }
707} 707}
708 708
709void Sheet::editCopy() 709void Sheet::editCopy()
710{ 710{
711 clipboardData.clear(); 711 clipboardData.clear();
712 712
713 int row1, row2, col1, col2; 713 int row1, row2, col1, col2;
714 getSelection(&row1, &col1, &row2, &col2); 714 getSelection(&row1, &col1, &row2, &col2);
715 715
716 typeCellData *cellData, *newCellData; 716 typeCellData *cellData, *newCellData;
717 int row, col; 717 int row, col;
718 for (row=row1; row<=row2; ++row) 718 for (row=row1; row<=row2; ++row)
719 for (col=col1; col<=col2; ++col) 719 for (col=col1; col<=col2; ++col)
720 { 720 {
721 cellData=findCellData(row, col); 721 cellData=findCellData(row, col);
722 if (cellData) 722 if (cellData)
723 { 723 {
724 newCellData=new typeCellData; 724 newCellData=new typeCellData;
725 *newCellData=*cellData; 725 *newCellData=*cellData;
726 newCellData->row-=row1; 726 newCellData->row-=row1;
727 newCellData->col-=col1; 727 newCellData->col-=col1;
728 clipboardData.append(newCellData); 728 clipboardData.append(newCellData);
729 } 729 }
730 } 730 }
731} 731}
732 732
733void Sheet::editCut() 733void Sheet::editCut()
734{ 734{
735 editCopy(); 735 editCopy();
736 editClear(); 736 editClear();
737} 737}
738 738
739void Sheet::editPaste(bool onlyContents=FALSE) 739void Sheet::editPaste(bool onlyContents)
740{ 740{
741 int row1=currentRow(), col1=currentColumn(); 741 int row1=currentRow(), col1=currentColumn();
742 typeCellData *cellData, *tempCellData; 742 typeCellData *cellData, *tempCellData;
743 743
744 for (tempCellData=clipboardData.first(); tempCellData; tempCellData=clipboardData.next()) 744 for (tempCellData=clipboardData.first(); tempCellData; tempCellData=clipboardData.next())
745 { 745 {
746 cellData=findCellData(tempCellData->row+row1, tempCellData->col+col1); 746 cellData=findCellData(tempCellData->row+row1, tempCellData->col+col1);
747 if (!cellData) cellData=createCellData(tempCellData->row+row1, tempCellData->col+col1); 747 if (!cellData) cellData=createCellData(tempCellData->row+row1, tempCellData->col+col1);
748 if (cellData) 748 if (cellData)
749 { 749 {
750 if (onlyContents) 750 if (onlyContents)
751 cellData->data=tempCellData->data; 751 cellData->data=tempCellData->data;
752 else 752 else
753 { 753 {
754 *cellData=*tempCellData; 754 *cellData=*tempCellData;
755 cellData->row+=row1; 755 cellData->row+=row1;
756 cellData->col+=col1; 756 cellData->col+=col1;
757 } 757 }
758 setText(cellData->row, cellData->col, dataParser(cellData->data)); 758 setText(cellData->row, cellData->col, dataParser(cellData->data));
759 emit sheetModified(); 759 emit sheetModified();
760 } 760 }
761 } 761 }
762} 762}
763 763
764void Sheet::insertRows(int no=1, bool allColumns=TRUE) 764void Sheet::insertRows(int no, bool allColumns)
765{ 765{
766 setNumRows(numRows()+no); 766 setNumRows(numRows()+no);
767 767
768 typeCellData *tempCellData; 768 typeCellData *tempCellData;
769 int row=currentRow(), col=currentColumn(); 769 int row=currentRow(), col=currentColumn();
770 770
771 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next()) 771 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next())
772 if (tempCellData->row>=row && (allColumns || tempCellData->col==col)) 772 if (tempCellData->row>=row && (allColumns || tempCellData->col==col))
773 { 773 {
774 clearCell(tempCellData->row, tempCellData->col); 774 clearCell(tempCellData->row, tempCellData->col);
775 tempCellData->row+=no; 775 tempCellData->row+=no;
776 } 776 }
777 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next()) 777 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next())
778 if (tempCellData->row>=row && (allColumns || tempCellData->col==col)) 778 if (tempCellData->row>=row && (allColumns || tempCellData->col==col))
779 { 779 {
780 updateCell(tempCellData->row-no, tempCellData->col); 780 updateCell(tempCellData->row-no, tempCellData->col);
781 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data)); 781 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data));
782 } 782 }
783 emit sheetModified(); 783 emit sheetModified();
784} 784}
785 785
786void Sheet::insertColumns(int no=1, bool allRows=TRUE) 786void Sheet::insertColumns(int no, bool allRows)
787{ 787{
788 int noCols=numCols(); 788 int noCols=numCols();
789 int newCols=noCols+no; 789 int newCols=noCols+no;
790 setNumCols(newCols); 790 setNumCols(newCols);
791 for (int i=noCols; i<newCols; ++i) 791 for (int i=noCols; i<newCols; ++i)
792 horizontalHeader()->setLabel(i, getHeaderString(i+1), DEFAULT_COL_WIDTH); 792 horizontalHeader()->setLabel(i, getHeaderString(i+1), DEFAULT_COL_WIDTH);
793 793
794 typeCellData *tempCellData; 794 typeCellData *tempCellData;
795 int col=currentColumn(), row=currentRow(); 795 int col=currentColumn(), row=currentRow();
796 796
797 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next()) 797 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next())
798 if (tempCellData->col>=col && (allRows || tempCellData->row==row)) 798 if (tempCellData->col>=col && (allRows || tempCellData->row==row))
799 { 799 {
800 clearCell(tempCellData->row, tempCellData->col); 800 clearCell(tempCellData->row, tempCellData->col);
801 tempCellData->col+=no; 801 tempCellData->col+=no;
802 } 802 }
803 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next()) 803 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next())
804 if (tempCellData->col>=col && (allRows || tempCellData->row==row)) 804 if (tempCellData->col>=col && (allRows || tempCellData->row==row))
805 { 805 {
806 updateCell(tempCellData->row, tempCellData->col-no); 806 updateCell(tempCellData->row, tempCellData->col-no);
807 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data)); 807 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data));
808 } 808 }
809 emit sheetModified(); 809 emit sheetModified();
810} 810}
811 811
812void Sheet::dataFindReplace(const QString &findStr, const QString &replaceStr, bool matchCase=TRUE, bool allCells=TRUE, bool entireCell=FALSE, bool replace=FALSE, bool replaceAll=FALSE) 812void Sheet::dataFindReplace(const QString &findStr, const QString &replaceStr, bool matchCase, bool allCells, bool entireCell, bool replace, bool replaceAll)
813{ 813{
814 typeCellData *tempCellData; 814 typeCellData *tempCellData;
815 int row1, col1, row2, col2; 815 int row1, col1, row2, col2;
816 getSelection(&row1, &col1, &row2, &col2); 816 getSelection(&row1, &col1, &row2, &col2);
817 bool found=FALSE; 817 bool found=FALSE;
818 818
819 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next()) 819 for (tempCellData=sheetData.first(); tempCellData; tempCellData=sheetData.next())
820 if (allCells || (tempCellData->row>=row1 && tempCellData->row<=row2 && tempCellData->col>=col1 && tempCellData->col<=col2)) 820 if (allCells || (tempCellData->row>=row1 && tempCellData->row<=row2 && tempCellData->col>=col1 && tempCellData->col<=col2))
821 { 821 {
822 QTableItem *cellItem=item(tempCellData->row, tempCellData->col); 822 QTableItem *cellItem=item(tempCellData->row, tempCellData->col);
823 if (cellItem && (entireCell ? (matchCase ? cellItem->text()==findStr : cellItem->text().upper()==findStr.upper()) : cellItem->text().find(findStr, 0, matchCase)>=0)) 823 if (cellItem && (entireCell ? (matchCase ? cellItem->text()==findStr : cellItem->text().upper()==findStr.upper()) : cellItem->text().find(findStr, 0, matchCase)>=0))
824 { 824 {
825 if (!found) 825 if (!found)
826 { 826 {
827 found=TRUE; 827 found=TRUE;
828 clearSelection(); 828 clearSelection();
829 } 829 }
830 setCurrentCell(tempCellData->row, tempCellData->col); 830 setCurrentCell(tempCellData->row, tempCellData->col);
831 if (replace) 831 if (replace)
832 { 832 {
833 tempCellData->data=cellItem->text().replace(QRegExp(findStr, matchCase), replaceStr); 833 tempCellData->data=cellItem->text().replace(QRegExp(findStr, matchCase), replaceStr);
834 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data)); 834 setText(tempCellData->row, tempCellData->col, dataParser(tempCellData->data));
835 } 835 }
836 if (!replace || !replaceAll) break; 836 if (!replace || !replaceAll) break;
837 } 837 }
838 } 838 }
839 839
840 if (found) 840 if (found)
841 { 841 {
842 if (replace) 842 if (replace)
843 slotCellChanged(currentRow(), currentColumn()); 843 slotCellChanged(currentRow(), currentColumn());
844 } 844 }
845 else 845 else
846 QMessageBox::warning(this, tr("Error"), tr("Search key not found!")); 846 QMessageBox::warning(this, tr("Error"), tr("Search key not found!"));
847} 847}
848 848
849// 849//
850// Static functions 850// Static functions
851// 851//
852 852
853QString Sheet::getHeaderString(int section) 853QString Sheet::getHeaderString(int section)
854{ 854{
855 if (section<1) return ""; 855 if (section<1) return "";
856 return getHeaderString((section-1)/26)+QChar('A'+(section-1)%26); 856 return getHeaderString((section-1)/26)+QChar('A'+(section-1)%26);
857} 857}
858 858
859int Sheet::getHeaderColumn(const QString &section) 859int Sheet::getHeaderColumn(const QString &section)
860{ 860{
diff --git a/noncore/apps/opie-sheet/sortdlg.cpp b/noncore/apps/opie-sheet/sortdlg.cpp
index c60be0d..c2cdec8 100644
--- a/noncore/apps/opie-sheet/sortdlg.cpp
+++ b/noncore/apps/opie-sheet/sortdlg.cpp
@@ -1,68 +1,68 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qradiobutton.h> 16#include <qradiobutton.h>
17#include <qmessagebox.h> 17#include <qmessagebox.h>
18#include "sortdlg.h" 18#include "sortdlg.h"
19 19
20SortDialog::SortDialog(QWidget *parent=0) 20SortDialog::SortDialog(QWidget *parent)
21 :QDialog(parent, 0, TRUE) 21 :QDialog(parent, 0, TRUE)
22{ 22{
23 // Main widget 23 // Main widget
24 tabs=new QTabWidget(this); 24 tabs=new QTabWidget(this);
25 widgetSort=new QWidget(tabs); 25 widgetSort=new QWidget(tabs);
26 widgetOptions=new QWidget(tabs); 26 widgetOptions=new QWidget(tabs);
27 tabs->addTab(widgetSort, tr("&Sort")); 27 tabs->addTab(widgetSort, tr("&Sort"));
28 tabs->addTab(widgetOptions, tr("&Options")); 28 tabs->addTab(widgetOptions, tr("&Options"));
29 29
30 // Sort tab 30 // Sort tab
31 comboFieldA=createFieldCombo(tr("&Sort by"), 10); 31 comboFieldA=createFieldCombo(tr("&Sort by"), 10);
32 groupOrderA=createOrderButtons(10); 32 groupOrderA=createOrderButtons(10);
33 comboFieldB=createFieldCombo(tr("&Then by"), 90); 33 comboFieldB=createFieldCombo(tr("&Then by"), 90);
34 groupOrderB=createOrderButtons(90); 34 groupOrderB=createOrderButtons(90);
35 comboFieldC=createFieldCombo(tr("Then &by"), 170); 35 comboFieldC=createFieldCombo(tr("Then &by"), 170);
36 groupOrderC=createOrderButtons(170); 36 groupOrderC=createOrderButtons(170);
37 37
38 // Options tab 38 // Options tab
39 checkCase=new QCheckBox(tr("&Case Sensitive"), widgetOptions); 39 checkCase=new QCheckBox(tr("&Case Sensitive"), widgetOptions);
40 checkCase->setGeometry(10, 10, 215, 20); 40 checkCase->setGeometry(10, 10, 215, 20);
41 checkCase->setChecked(TRUE); 41 checkCase->setChecked(TRUE);
42 42
43 groupDirection=new QVButtonGroup(tr("&Direction"), widgetOptions); 43 groupDirection=new QVButtonGroup(tr("&Direction"), widgetOptions);
44 groupDirection->setGeometry(10, 40, 215, 70); 44 groupDirection->setGeometry(10, 40, 215, 70);
45 QRadioButton *radio=new QRadioButton(tr("&Top to bottom (rows)"), groupDirection); 45 QRadioButton *radio=new QRadioButton(tr("&Top to bottom (rows)"), groupDirection);
46 radio=new QRadioButton(tr("&Left to right (columns)"), groupDirection); 46 radio=new QRadioButton(tr("&Left to right (columns)"), groupDirection);
47 groupDirection->setButton(0); 47 groupDirection->setButton(0);
48 connect(groupDirection, SIGNAL(clicked(int)), this, SLOT(directionChanged(int))); 48 connect(groupDirection, SIGNAL(clicked(int)), this, SLOT(directionChanged(int)));
49 49
50 // Main widget 50 // Main widget
51 box=new QVBoxLayout(this); 51 box=new QVBoxLayout(this);
52 box->addWidget(tabs); 52 box->addWidget(tabs);
53 53
54 setCaption(tr("Sort")); 54 setCaption(tr("Sort"));
55} 55}
56 56
57SortDialog::~SortDialog() 57SortDialog::~SortDialog()
58{ 58{
59} 59}
60 60
61QComboBox *SortDialog::createFieldCombo(const QString &caption, int y) 61QComboBox *SortDialog::createFieldCombo(const QString &caption, int y)
62{ 62{
63 QLabel *label=new QLabel(caption, widgetSort); 63 QLabel *label=new QLabel(caption, widgetSort);
64 label->setGeometry(10, y+5, 215, 20); 64 label->setGeometry(10, y+5, 215, 20);
65 QComboBox *combo=new QComboBox(FALSE, widgetSort); 65 QComboBox *combo=new QComboBox(FALSE, widgetSort);
66 combo->setGeometry(10, y+35, 105, 20); 66 combo->setGeometry(10, y+35, 105, 20);
67 label->setBuddy(combo); 67 label->setBuddy(combo);
68 return combo; 68 return combo;
@@ -133,60 +133,61 @@ int SortDialog::exec(Sheet *s)
133 if (compareResult>0) swap=TRUE; 133 if (compareResult>0) swap=TRUE;
134 else if (compareResult==0) 134 else if (compareResult==0)
135 { 135 {
136 compareResult=compareItems(s->item(field2, j-1), s->item(field2, j), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked()); 136 compareResult=compareItems(s->item(field2, j-1), s->item(field2, j), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked());
137 if (compareResult>0) swap=TRUE; 137 if (compareResult>0) swap=TRUE;
138 else if (compareResult==0) 138 else if (compareResult==0)
139 { 139 {
140 compareResult=compareItems(s->item(field3, j-1), s->item(field3, j), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked()); 140 compareResult=compareItems(s->item(field3, j-1), s->item(field3, j), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked());
141 if (compareResult>0) swap=TRUE; 141 if (compareResult>0) swap=TRUE;
142 } 142 }
143 } 143 }
144 if (swap) 144 if (swap)
145 for (int row=row1; row<=row2; ++row) 145 for (int row=row1; row<=row2; ++row)
146 s->swapCells(row, j-1, row, j); 146 s->swapCells(row, j-1, row, j);
147 } 147 }
148 } 148 }
149 else 149 else
150 { 150 {
151 field1=Sheet::getHeaderColumn(field1S)-1; 151 field1=Sheet::getHeaderColumn(field1S)-1;
152 field2=Sheet::getHeaderColumn(field2S)-1; 152 field2=Sheet::getHeaderColumn(field2S)-1;
153 field3=Sheet::getHeaderColumn(field3S)-1; 153 field3=Sheet::getHeaderColumn(field3S)-1;
154 int i, j; 154 int i, j;
155 for (i=row2; i>=row1; --i) 155 for (i=row2; i>=row1; --i)
156 for (j=row1+1; j<=i; ++j) 156 for (j=row1+1; j<=i; ++j)
157 { 157 {
158 bool swap=FALSE; 158 bool swap=FALSE;
159 int compareResult=compareItems(s->item(j-1, field1), s->item(j, field1), groupOrderA->id(groupOrderA->selected()), checkCase->isChecked()); 159 int compareResult=compareItems(s->item(j-1, field1), s->item(j, field1), groupOrderA->id(groupOrderA->selected()), checkCase->isChecked());
160 if (compareResult>0) swap=TRUE; 160 if (compareResult>0) swap=TRUE;
161 else if (compareResult==0) 161 else if (compareResult==0)
162 { 162 {
163 compareResult=compareItems(s->item(j-1, field2), s->item(j, field2), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked()); 163 compareResult=compareItems(s->item(j-1, field2), s->item(j, field2), groupOrderB->id(groupOrderB->selected()), checkCase->isChecked());
164 if (compareResult>0) swap=TRUE; 164 if (compareResult>0) swap=TRUE;
165 else if (compareResult==0) 165 else if (compareResult==0)
166 { 166 {
167 compareResult=compareItems(s->item(j-1, field3), s->item(j, field3), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked()); 167 compareResult=compareItems(s->item(j-1, field3), s->item(j, field3), groupOrderC->id(groupOrderC->selected()), checkCase->isChecked());
168 if (compareResult>0) swap=TRUE; 168 if (compareResult>0) swap=TRUE;
169 } 169 }
170 } 170 }
171 if (swap) 171 if (swap)
172 for (int col=col1; col<=col2; ++col) 172 for (int col=col1; col<=col2; ++col)
173 s->swapCells(j-1, col, j, col); 173 s->swapCells(j-1, col, j, col);
174 } 174 }
175 } 175 }
176 return QDialog::Accepted; 176 return QDialog::Accepted;
177 } 177 }
178 return QDialog::Rejected; 178 return QDialog::Rejected;
179} 179}
180 180
181int SortDialog::compareItems(QTableItem *item1, QTableItem *item2, int descending=0, bool caseSensitive=TRUE) 181int SortDialog::compareItems(QTableItem *item1, QTableItem *item2,
182 int descending, bool caseSensitive)
182{ 183{
183 int result=0; 184 int result=0;
184 if (item1) 185 if (item1)
185 { 186 {
186 if (item2) result=(caseSensitive ? item1->text().compare(item2->text()) : item1->text().upper().compare(item2->text().upper())); 187 if (item2) result=(caseSensitive ? item1->text().compare(item2->text()) : item1->text().upper().compare(item2->text().upper()));
187 else result=-1; 188 else result=-1;
188 } 189 }
189 else 190 else
190 if (item2) result=1; 191 if (item2) result=1;
191 return (descending ? -result : result); 192 return (descending ? -result : result);
192} 193}
diff --git a/noncore/apps/opie-sheet/textdlg.cpp b/noncore/apps/opie-sheet/textdlg.cpp
index 0810eb2..34cec29 100644
--- a/noncore/apps/opie-sheet/textdlg.cpp
+++ b/noncore/apps/opie-sheet/textdlg.cpp
@@ -1,46 +1,47 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9 9
10/* 10/*
11 * Opie Sheet (formerly Sheet/Qt) 11 * Opie Sheet (formerly Sheet/Qt)
12 * by Serdar Ozler <sozler@sitebest.com> 12 * by Serdar Ozler <sozler@sitebest.com>
13 */ 13 */
14 14
15#include "textdlg.h" 15#include "textdlg.h"
16 16
17TextDialog::TextDialog(QWidget *parent=0) 17TextDialog::TextDialog(QWidget *parent)
18 :QDialog(parent, 0, TRUE) 18 :QDialog(parent, 0, TRUE)
19{ 19{
20 edit=new QLineEdit(this); 20 edit=new QLineEdit(this);
21 edit->setGeometry(90, 10, 100, 25); 21 edit->setGeometry(90, 10, 100, 25);
22 22
23 label=new QLabel(this); 23 label=new QLabel(this);
24 label->setGeometry(10, 10, 70, 25); 24 label->setGeometry(10, 10, 70, 25);
25 label->setBuddy(edit); 25 label->setBuddy(edit);
26 26
27 resize(200, 45); 27 resize(200, 45);
28} 28}
29 29
30TextDialog::~TextDialog() 30TextDialog::~TextDialog()
31{ 31{
32} 32}
33 33
34int TextDialog::exec(const QString &caption, const QString &text, const QString &value="") 34int TextDialog::exec(const QString &caption, const QString &text,
35 const QString &value)
35{ 36{
36 setCaption(caption); 37 setCaption(caption);
37 label->setText(text); 38 label->setText(text);
38 edit->setText(value); 39 edit->setText(value);
39 40
40 return QDialog::exec(); 41 return QDialog::exec();
41} 42}
42 43
43QString TextDialog::getValue() 44QString TextDialog::getValue()
44{ 45{
45 return edit->text(); 46 return edit->text();
46} 47}
diff --git a/noncore/tools/remote/helptab.cpp b/noncore/tools/remote/helptab.cpp
index 3c53ab6..ac51e13 100644
--- a/noncore/tools/remote/helptab.cpp
+++ b/noncore/tools/remote/helptab.cpp
@@ -1,27 +1,27 @@
1/* 1/*
2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. 2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
3Copyright (C) 2002 Thomas Stephens 3Copyright (C) 2002 Thomas Stephens
4 4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public 5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later 6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version. 7version.
8 8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details. 11Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free 13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ 15*/
16 16
17#include "helptab.h" 17#include "helptab.h"
18 18
19HelpTab::HelpTab(QWidget *parent=0, const char *name=0):QWidget(parent, name) 19HelpTab::HelpTab(QWidget *parent, const char *name):QWidget(parent, name)
20{ 20{
21 QVBoxLayout *layout = new QVBoxLayout(this); 21 QVBoxLayout *layout = new QVBoxLayout(this);
22 QString *string = new QString("<qt><h1>Opie-Remote Usage Instructions</h1><p>First, some definitions. A Remote is a remote entry in an lircd.conf file, it represents one remote you want to emulate. A Remote Layout is one entry in your ~/Settings/Remote.conf file. It represents the buttons that you see on your screen. Each button on a Remote Layout can be mapped to any button in a Remote. This way you can have, for example, a vcr remote layout, in which all the play/pause/etc buttons are mapped to the buttons on your vcr's remote. However, most VCR's don't have volume controls, so the volume buttons can be mapped to the volume buttons on your TV.</p><p>The first things you need the lirc and lirc-modules ipkgs. If you installed this from an ipkg, they should already be there, thanks to the wonderful world of dependencies. If not, get them. The next thing you need is an lircd.conf file. you can get these at <a href=http://www.lirc.org/>http://www.lirc.org/</a>. Read the documentation there to figure out how to make your own, if one for your remote doesn't exist, or how to have multiple remotes in one lircd.conf file. Once you have a good lircd.conf file, put it in /etc, kill the lircd daemon (if its running) and do a modprobe lirc_sir. Then, run lircd again.</p><p>The next thing you want to do is to create a remote layout. Go to the config tab, and enter a name for your remote layout in the pulldown menu. Dont use the name Remotes, as that could confuse the app. Hopefully, that will be fixed soon. after entering the name you want to use, press New, and then select the name again from the pulldown menu (another oddity that i hope to fix). Then, press each button that you want to map, and a dialog should appear. Select the remote and button that you want to use, and click OK. Once you are done, go to the Remote tab, and select the new remote from the dropdown menu. It should works fine. If at any time you want to change a remote layout, go to the Config tab, select the layout from the dropdown menu, and change the buttons you want to change.</p><p>This is program is written and maintaned by Thomas (spiralman) Stephens. <a href=mailto:spiralman@softhome.net>spiralman@softhome.net</a>. Or, look for me on #opie or #handhelds.org on irc.openprojects.net.</p></qt>"); 22 QString *string = new QString("<qt><h1>Opie-Remote Usage Instructions</h1><p>First, some definitions. A Remote is a remote entry in an lircd.conf file, it represents one remote you want to emulate. A Remote Layout is one entry in your ~/Settings/Remote.conf file. It represents the buttons that you see on your screen. Each button on a Remote Layout can be mapped to any button in a Remote. This way you can have, for example, a vcr remote layout, in which all the play/pause/etc buttons are mapped to the buttons on your vcr's remote. However, most VCR's don't have volume controls, so the volume buttons can be mapped to the volume buttons on your TV.</p><p>The first things you need the lirc and lirc-modules ipkgs. If you installed this from an ipkg, they should already be there, thanks to the wonderful world of dependencies. If not, get them. The next thing you need is an lircd.conf file. you can get these at <a href=http://www.lirc.org/>http://www.lirc.org/</a>. Read the documentation there to figure out how to make your own, if one for your remote doesn't exist, or how to have multiple remotes in one lircd.conf file. Once you have a good lircd.conf file, put it in /etc, kill the lircd daemon (if its running) and do a modprobe lirc_sir. Then, run lircd again.</p><p>The next thing you want to do is to create a remote layout. Go to the config tab, and enter a name for your remote layout in the pulldown menu. Dont use the name Remotes, as that could confuse the app. Hopefully, that will be fixed soon. after entering the name you want to use, press New, and then select the name again from the pulldown menu (another oddity that i hope to fix). Then, press each button that you want to map, and a dialog should appear. Select the remote and button that you want to use, and click OK. Once you are done, go to the Remote tab, and select the new remote from the dropdown menu. It should works fine. If at any time you want to change a remote layout, go to the Config tab, select the layout from the dropdown menu, and change the buttons you want to change.</p><p>This is program is written and maintaned by Thomas (spiralman) Stephens. <a href=mailto:spiralman@softhome.net>spiralman@softhome.net</a>. Or, look for me on #opie or #handhelds.org on irc.openprojects.net.</p></qt>");
23 QTextView *view = new QTextView((const QString &)*string, 0, this, "view"); 23 QTextView *view = new QTextView((const QString &)*string, 0, this, "view");
24 layout->insertSpacing( -1, 5); 24 layout->insertSpacing( -1, 5);
25 layout->insertWidget(-1, view); 25 layout->insertWidget(-1, view);
26 layout->insertSpacing(-1, 5); 26 layout->insertSpacing(-1, 5);
27} \ No newline at end of file 27} \ No newline at end of file
diff --git a/noncore/tools/remote/helptab.h b/noncore/tools/remote/helptab.h
index f3f99b3..83f24ef 100644
--- a/noncore/tools/remote/helptab.h
+++ b/noncore/tools/remote/helptab.h
@@ -1,26 +1,31 @@
1/* 1/*
2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. 2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
3Copyright (C) 2002 Thomas Stephens 3Copyright (C) 2002 Thomas Stephens
4 4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public 5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later 6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version. 7version.
8 8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details. 11Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free 13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ 15*/
16 16
17#ifndef HELP_TAB_H
18#define HELP_TAB_H
19
17#include <qwidget.h> 20#include <qwidget.h>
18#include <qtextview.h> 21#include <qtextview.h>
19#include <qstring.h> 22#include <qstring.h>
20#include <qlayout.h> 23#include <qlayout.h>
21 24
22class HelpTab : public QWidget 25class HelpTab : public QWidget
23{ 26{
24public: 27public:
25 HelpTab(QWidget *parent=0, const char *name=0); 28 HelpTab(QWidget *parent=0, const char *name=0);
26}; \ No newline at end of file 29};
30
31#endif
diff --git a/noncore/tools/remote/recorddialog.cpp b/noncore/tools/remote/recorddialog.cpp
index f7cd30c..cfab730 100644
--- a/noncore/tools/remote/recorddialog.cpp
+++ b/noncore/tools/remote/recorddialog.cpp
@@ -1,81 +1,82 @@
1/* 1/*
2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. 2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
3Copyright (C) 2002 Thomas Stephens 3Copyright (C) 2002 Thomas Stephens
4 4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public 5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later 6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version. 7version.
8 8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details. 11Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free 13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ 15*/
16 16
17#include "recorddialog.h" 17#include "recorddialog.h"
18 18
19RecordDialog::RecordDialog(QWidget *parent=0, const char *name=0):QDialog(parent, name) 19RecordDialog::RecordDialog(QWidget *parent, const char *name)
20 :QDialog(parent, name)
20{ 21{
21 QVBoxLayout *layout = new QVBoxLayout(this); 22 QVBoxLayout *layout = new QVBoxLayout(this);
22 QHBoxLayout *hlayout = new QHBoxLayout(this); 23 QHBoxLayout *hlayout = new QHBoxLayout(this);
23 24
24 layout->insertSpacing(0,5); 25 layout->insertSpacing(0,5);
25 output = new QTextView("Please enter the name of the new remote, and press Return\n", 0, this, "output"); 26 output = new QTextView("Please enter the name of the new remote, and press Return\n", 0, this, "output");
26 layout->insertWidget(-1, output); 27 layout->insertWidget(-1, output);
27 layout->insertSpacing(-1, 5); 28 layout->insertSpacing(-1, 5);
28 layout->insertLayout(-1, hlayout); 29 layout->insertLayout(-1, hlayout);
29 layout->insertSpacing(-1, 5); 30 layout->insertSpacing(-1, 5);
30 31
31 hlayout->insertSpacing(0, 5); 32 hlayout->insertSpacing(0, 5);
32 input = new QLineEdit(this, "input"); 33 input = new QLineEdit(this, "input");
33 hlayout->insertWidget(-1, input, 1); 34 hlayout->insertWidget(-1, input, 1);
34 hlayout->insertSpacing(-1, 5); 35 hlayout->insertSpacing(-1, 5);
35 36
36 QPushButton *ret = new QPushButton("Return", this, "return"); 37 QPushButton *ret = new QPushButton("Return", this, "return");
37 hlayout->insertWidget(-1, ret); 38 hlayout->insertWidget(-1, ret);
38 hlayout->insertSpacing(-1, 5); 39 hlayout->insertSpacing(-1, 5);
39 connect(ret, SIGNAL(clicked()), this, SLOT(retPressed()) ); 40 connect(ret, SIGNAL(clicked()), this, SLOT(retPressed()) );
40 where = 0; 41 where = 0;
41 42
42 record = new OProcess; 43 record = new OProcess;
43} 44}
44 45
45void RecordDialog::retPressed() 46void RecordDialog::retPressed()
46{ 47{
47 printf("RecordDialog::retPressed: ret pressed\n"); 48 printf("RecordDialog::retPressed: ret pressed\n");
48 49
49 if(where == 0) 50 if(where == 0)
50 { 51 {
51 connect(record, SIGNAL(receivedStdout(OProcess *, char *, int)), this, SLOT(incoming(OProcess *, char *, int)) ); 52 connect(record, SIGNAL(receivedStdout(OProcess *, char *, int)), this, SLOT(incoming(OProcess *, char *, int)) );
52 connect(record, SIGNAL(receivedStderr(OProcess *, char *, int)), this, SLOT(incoming(OProcess *, char *, int)) ); 53 connect(record, SIGNAL(receivedStderr(OProcess *, char *, int)), this, SLOT(incoming(OProcess *, char *, int)) );
53 connect(record, SIGNAL(processExited(OProcess *)), this, SLOT(done(OProcess *)) ); 54 connect(record, SIGNAL(processExited(OProcess *)), this, SLOT(done(OProcess *)) );
54 printf("RecordDialog::retPressed: starting irrecord\n"); 55 printf("RecordDialog::retPressed: starting irrecord\n");
55 QString file = "/tmp/" + input->text(); 56 QString file = "/tmp/" + input->text();
56 *record<<"irrecord"<<file.latin1(); 57 *record<<"irrecord"<<file.latin1();
57 if(!record->start(OProcess::NotifyOnExit, OProcess::AllOutput)) 58 if(!record->start(OProcess::NotifyOnExit, OProcess::AllOutput))
58 { 59 {
59 QMessageBox *mb = new QMessageBox("Error!", 60 QMessageBox *mb = new QMessageBox("Error!",
60 "Could not start irrecord. You must<br>use an lirc ipkg that includes<br>irrecord", 61 "Could not start irrecord. You must<br>use an lirc ipkg that includes<br>irrecord",
61 QMessageBox::NoIcon, 62 QMessageBox::NoIcon,
62 QMessageBox::Ok, 63 QMessageBox::Ok,
63 QMessageBox::NoButton, 64 QMessageBox::NoButton,
64 QMessageBox::NoButton); 65 QMessageBox::NoButton);
65 mb->exec(); 66 mb->exec();
66 return; 67 return;
67 } 68 }
68 // record->resume(); 69 // record->resume();
69 where = 1; 70 where = 1;
70 } 71 }
71} 72}
72 73
73void RecordDialog::incoming(OProcess *proc, char *buffer, int len) 74void RecordDialog::incoming(OProcess *proc, char *buffer, int len)
74{ 75{
75 //output->setText(output->text() + QString(buffer).truncate(len-1)); 76 //output->setText(output->text() + QString(buffer).truncate(len-1));
76 printf("RecordDialog::incoming: got text from irrecord\n"); 77 printf("RecordDialog::incoming: got text from irrecord\n");
77} 78}
78 79
79void RecordDialog::done(OProcess *proc) 80void RecordDialog::done(OProcess *proc)
80{ 81{
81} 82}
diff --git a/noncore/tools/remote/recorddialog.h b/noncore/tools/remote/recorddialog.h
index 38b2bb4..e4dcae6 100644
--- a/noncore/tools/remote/recorddialog.h
+++ b/noncore/tools/remote/recorddialog.h
@@ -1,43 +1,49 @@
1/* 1/*
2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. 2Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie.
3Copyright (C) 2002 Thomas Stephens 3Copyright (C) 2002 Thomas Stephens
4 4
5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public 5This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later 6License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
7version. 7version.
8 8
9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 9This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 10implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11Public License for more details. 11Public License for more details.
12 12
13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free 13You should have received a copy of the GNU General Public License along with this program; if not, write to the Free
14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15*/ 15*/
16 16
17#ifndef RecordDialog_H
18#define RecordDialog_H
19
17#include <qdialog.h> 20#include <qdialog.h>
18#include <qtextview.h> 21#include <qtextview.h>
19#include <qlineedit.h> 22#include <qlineedit.h>
20#include <qpushbutton.h> 23#include <qpushbutton.h>
21#include <qwidget.h> 24#include <qwidget.h>
22#include <qlayout.h> 25#include <qlayout.h>
23#include <qmessagebox.h> 26#include <qmessagebox.h>
24 27
25#include <stdio.h> 28#include <stdio.h>
26 29
27#include <opie/oprocess.h> 30#include <opie/oprocess.h>
28 31
29class RecordDialog : public QDialog 32class RecordDialog : public QDialog
30{ 33{
31 Q_OBJECT 34 Q_OBJECT
32public: 35public:
33 RecordDialog(QWidget *parent=0, const char *name=0); 36 RecordDialog(QWidget *parent=0, const char *name=0);
34public slots: 37public slots:
35 void retPressed(); 38 void retPressed();
36 void incoming(OProcess *proc, char *buffer, int len); 39 void incoming(OProcess *proc, char *buffer, int len);
37 void done(OProcess *proc); 40 void done(OProcess *proc);
38private: 41private:
39 QTextView *output; 42 QTextView *output;
40 QLineEdit *input; 43 QLineEdit *input;
41 OProcess *record; 44 OProcess *record;
42 int where; 45 int where;
43}; \ No newline at end of file 46};
47
48#endif
49