source: tests/widget/widget.cpp@ 1037

Last change on this file since 1037 was 756, checked in by Dmitry A. Kuminov, 15 years ago

tests/widget: Activated keyboard logger test case.

File size: 26.2 KB
RevLine 
[231]1#include <QDebug>
2
3#include <QtGui>
4
5#define myDefFlagEx(var,fl,varstr,flstr) if (var & fl) { \
[611]6 if (!varstr.isEmpty()) varstr += "|"; varstr += flstr; \
[231]7} else do {} while(0)
8
9#define myDefFlag(var,fl,varstr) myDefFlagEx(var,fl,varstr,#fl)
10#define myDefFlagCut(var,fl,varstr,pos) myDefFlagEx(var,fl,varstr,#fl + pos)
11
[368]12#define PRINT_EXPR(e) qWarning() << #e << e
[231]13
14QDebug operator<<(QDebug dbg, Qt::WindowStates st)
15{
[611]16 QByteArray name;
[231]17 myDefFlagEx(st, Qt::WindowMinimized, name, "Min");
18 myDefFlagEx(st, Qt::WindowMaximized, name, "Max");
19 myDefFlagEx(st, Qt::WindowFullScreen, name, "Full");
20 myDefFlagEx(st, Qt::WindowActive, name, "Act");
[611]21 if (name.isEmpty()) name = "None";
22 dbg.nospace() << "WindowState(" << name.constData() << ")";
[231]23 return dbg.space();
24}
25
26QDebug operator<<(QDebug dbg, Qt::FocusReason r)
27{
[611]28 QByteArray name;
[231]29 if (r == Qt::MouseFocusReason) name = "Mouse";
30 if (r == Qt::TabFocusReason) name = "Tab";
31 if (r == Qt::BacktabFocusReason) name = "Backtab";
32 if (r == Qt::ActiveWindowFocusReason) name = "ActWin";
33 if (r == Qt::PopupFocusReason) name = "Popup";
34 if (r == Qt::ShortcutFocusReason) name = "Shortcut";
35 if (r == Qt::MenuBarFocusReason) name = "MenuBar";
36 if (r == Qt::OtherFocusReason) name = "Other";
[611]37 dbg.nospace() << "FocusReason(" << name.constData() << ")";
[231]38 return dbg.space();
39}
40
[304]41////////////////////////////////////////////////////////////////////////////////
42
43class MyChild : public QWidget
44{
45 Q_OBJECT
46
47public:
48
49 MyChild(QWidget *aParent) : QWidget(aParent), mPressed(0)
50 {
51 setFocusPolicy(Qt::StrongFocus);
52
53 resize(64, 32);
54 }
55
56 void paintEvent(QPaintEvent *aE)
57 {
[611]58 qDebug() << this << __FUNCTION__
[304]59 << ": " << aE->rect() << "focus" << hasFocus();
60
61 QPainter p(this);
62 p.setRenderHint(QPainter::Antialiasing);
63
64 if (hasFocus())
65 p.fillRect(aE->rect(), mPressed % 2 ? Qt::red : Qt::green);
66 else
67 p.fillRect(aE->rect(), Qt::gray);
68 }
69
70 void mousePressEvent(QMouseEvent *aE)
71 {
[501]72 Q_UNUSED(aE);
[304]73 ++mPressed;
74 update();
75 }
76
[311]77 void mouseReleaseEvent(QMouseEvent *aE)
78 {
[501]79 Q_UNUSED(aE);
[311]80 ++mPressed;
81 update();
82 }
83
[304]84 void focusInEvent(QFocusEvent *aE)
85 {
[611]86 qDebug() << this << __FUNCTION__ << ": reason" << aE->reason();
[304]87 QWidget::focusInEvent(aE);
88 }
89
90 void focusOutEvent(QFocusEvent *aE)
91 {
[611]92 qDebug() << this << __FUNCTION__ << ": reason" << aE->reason();
[304]93 QWidget::focusOutEvent(aE);
94 }
95
96private:
97
98 int mPressed;
99};
100
101////////////////////////////////////////////////////////////////////////////////
102
[231]103class MyButton : public QPushButton
104{
105public:
106
[311]107 MyButton(QWidget *aParent) : QPushButton(aParent)
108 {
109 QMenu *menu = new QMenu(aParent);
110 menu->addAction(QLatin1String("Action &1"));
111 menu->addAction(QLatin1String("Action &2"));
112 setMenu(menu);
113 }
[231]114
[304]115#if 0
[231]116 void focusInEvent(QFocusEvent *aE)
117 {
[611]118 qDebug() << this << __FUNCTION__ << ":" << text()
[304]119 << "reason" << aE->reason()
[611]120 << "focus" << qApp->focusWidget();
[304]121
122 QPushButton::focusInEvent(aE);
[231]123 }
124
125 void focusOutEvent(QFocusEvent *aE)
126 {
[611]127 qDebug() << this << __FUNCTION__ << ":" << text()
[304]128 << "reason" << aE->reason()
[611]129 << "focus" << qApp->focusWidget();
[304]130 QPushButton::focusOutEvent(aE);
131 }
[231]132#endif
133};
134
[304]135
136////////////////////////////////////////////////////////////////////////////////
137
[231]138class MyCombo : public QComboBox
139{
140public:
141
142 MyCombo(QWidget *aParent) : QComboBox(aParent) {}
143
[304]144#if 0
[231]145 void focusInEvent(QFocusEvent *aE)
146 {
[611]147 qDebug() << this << __FUNCTION__ << ":" << currentText()
[304]148 << "reason" << aE->reason()
[611]149 << "focus" << qApp->focusWidget();
[304]150 QComboBox::focusInEvent(aE);
[231]151 }
152
153 void focusOutEvent(QFocusEvent *aE)
154 {
[611]155 qDebug() << this << __FUNCTION__ << ":" << currentText()
[304]156 << "reason" << aE->reason()
[611]157 << "focus" << qApp->focusWidget();
[304]158 QComboBox::focusOutEvent(aE);
159 }
[231]160#endif
161
162#if 0
163 void resizeEvent(QResizeEvent *aE)
164 {
165 qDebug() << __FUNCTION__ << ":" << currentText() << "g" << geometry() << "fg" << frameGeometry()
166 << "sz" << aE->size() << "old" << aE->oldSize();
167 }
168
169 void moveEvent(QMoveEvent *aE)
170 {
171 qDebug() << __FUNCTION__ << ":" << currentText() << " g" << geometry() << "fg" << frameGeometry()
172 << "pos" << aE->pos() << "old" << aE->oldPos();
173 }
174#endif
175
176#if 0
177 virtual void enterEvent(QEvent *event)
178 {
179 qDebug() << __FUNCTION__ << ":" << currentText();
180 }
181
182 virtual void leaveEvent(QEvent *event)
183 {
184 qDebug() << __FUNCTION__ << ":" << currentText();
185 }
186#endif
187
188#if 0
189 void mousePressEvent(QMouseEvent *aE)
190 {
191 qDebug() << __FUNCTION__ << ": btn" << aE->button()
[611]192 << "btns" << qDebugFmtHex(aE->buttons())
193 << "mods" << qDebugFmtHex(aE->modifiers())
[231]194 << "gpos" << aE->globalPos() << "pos" << aE->pos();
195 QComboBox::mousePressEvent(aE);
196 }
197
198 void mouseReleaseEvent(QMouseEvent *aE)
199 {
200 qDebug() << __FUNCTION__ << ": btn" << aE->button()
[611]201 << "btns" << qDebugFmtHex(aE->buttons())
202 << "mods" << qDebugFmtHex(aE->modifiers())
[231]203 << "gpos" << aE->globalPos() << "pos" << aE->pos();
204 QComboBox::mouseReleaseEvent(aE);
205 }
206
207 void contextMenuEvent(QContextMenuEvent *aE)
208 {
209 QMenu menu;
210 menu.addAction(QLatin1String("Action &1"));
211 menu.addAction(QLatin1String("Action &2"));
212 menu.exec(aE->globalPos());
213 winId();
214 }
215#endif
216};
217
[304]218////////////////////////////////////////////////////////////////////////////////
219
[231]220class MyWidget : public QWidget
221{
222public:
223
[304]224 MyWidget() : mPressed(0)
[231]225 {
[481]226#if 0
[304]227 MyButton *btn1 = new MyButton(this);
[435]228 btn1->setText(QLatin1String("&Hello (also Ctrl+H)"));
229 btn1->setObjectName("Hello");
[304]230 btn1->move(20, 20);
[435]231
232 connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_H), btn1),
233 SIGNAL(activated()), btn1, SLOT(animateClick()));
234
[304]235 MyButton *btn2 = new MyButton(this);
[435]236 btn2->setText(QString::fromUtf16((const ushort *)L"&\u041f\u0440\u0438\u0432\u0435\u0442 (also Ctrl+\u041f)"));
237 btn2->setObjectName(QString::fromUtf16((const ushort *)L"\u041f\u0440\u0438\u0432\u0435\u0442"));
[304]238 btn2->move(20, 60);
[231]239
[435]240 connect(new QShortcut(QKeySequence(Qt::CTRL + 0x041F), btn2),
241 SIGNAL(activated()), btn2, SLOT(animateClick()));
242
[304]243// QComboBox *cb1 = new MyCombo(this);
244// cb1->addItem(QLatin1String("Test 1"));
245// cb1->addItem(QLatin1String("Test 2"));
[231]246
247// QComboBox *cb2 = new MyCombo(this);
248// cb2->addItem(QLatin1String("Test 3"));
249// cb2->addItem(QLatin1String("Test 4"));
250
[435]251 QVBoxLayout *mainLayout = new QVBoxLayout();
252 mainLayout->addWidget(btn1);
253 mainLayout->addWidget(btn2);
[304]254// mainLayout->addWidget(cb1);
[231]255// mainLayout->addWidget(cb2);
256
[435]257 setLayout(mainLayout);
[311]258#endif
[304]259
[341]260#if 0
[311]261 QMenuBar *mb = new QMenuBar(this);
262
263 QMenu *menu = new QMenu(mb);
264 menu->setTitle ("Menu &1");
265 menu->addAction(QLatin1String("Action &1"));
266 menu->addAction(QLatin1String("Action &2"));
267 mb->addMenu(menu);
268
269 menu = new QMenu(mb);
270 menu->setTitle ("Menu &2");
271 menu->addAction(QLatin1String("Action &1"));
272 menu->addAction(QLatin1String("Action &2"));
273 mb->addMenu(menu);
274
275 menu = new QMenu(mb);
276 menu->setTitle ("Menu &3");
277 menu->addAction(QLatin1String("Action &1"));
278 menu->addAction(QLatin1String("Action &2"));
279 mb->addMenu(menu);
280#endif
281
[304]282#if 0
283 new MyChild(this);
284#endif
285
[231]286 };
287
[368]288#if 0
[435]289 void closeEvent(QCloseEvent *aE)
290 {
291 QMessageBox::warning(this, QLatin1String("Close"),
292 QLatin1String("Somebody asked us to terminate"));
293 aE->accept();
294 }
295#endif
296
297#if 0
[231]298 void paintEvent(QPaintEvent *aE)
299 {
300 qDebug() << __FUNCTION__ <<": " << aE->rect();
301
302 QPainter p(this);
[346]303#if 0
304 // simple QPainter test
305
[231]306 p.setRenderHint(QPainter::Antialiasing);
307
[304]308 p.fillRect(0, 0, 20, 20, mPressed % 2 ? Qt::red : Qt::green);
[231]309
310 p.setPen(Qt::black);
311 p.drawEllipse(10, 10, 10, 10);
312
313 //p.setFont(QFont("Arial", 12));
314 p.drawText(10, 30, QLatin1String("ABC"));
[346]315#endif
[368]316#if 0
[346]317 // simple QClipboard image test
318
319 const QMimeData *data = QApplication::clipboard()->mimeData();
320 if (data && data->hasImage()){
321 QImage img = qvariant_cast<QImage>(data->imageData());
322 p.drawImage(0, 0, img);
323 }
324#endif
[231]325 }
326#endif
327
328#if 0
329 void resizeEvent(QResizeEvent *aE)
330 {
331 qDebug() << __FUNCTION__ << ": g" << geometry() << "fg" << frameGeometry()
332 << "sz" << aE->size() << "old" << aE->oldSize();
333 }
334
335 void moveEvent(QMoveEvent *aE)
336 {
337 qDebug() << __FUNCTION__ << ": g" << geometry() << "fg" << frameGeometry()
338 << "pos" << aE->pos() << "old" << aE->oldPos();
339 }
340#endif
341
342#if 0
343 void focusInEvent(QFocusEvent *aE)
344 {
[611]345 qDebug() << this << __FUNCTION__ << ": reason" << aE->reason();
[304]346 QWidget::focusInEvent(aE);
[231]347 }
348
349 void focusOutEvent(QFocusEvent *aE)
350 {
[611]351 qDebug() << this << __FUNCTION__ << ": reason" << aE->reason();
[304]352 QWidget::focusOutEvent(aE);
[231]353 }
354#endif
355
356#if 0
357 void changeEvent(QEvent *aE)
358 {
359 switch (aE->type()) {
360 case QEvent::WindowStateChange: {
361 QWindowStateChangeEvent *e2 = (QWindowStateChangeEvent *)aE;
362 qDebug().nospace() << __FUNCTION__ << ": QWindowStateChangeEvent(" <<
363 e2->oldState() << "->" << windowState() << ")";
364 break;
365 }
366 default:
367 break;
368 }
369 }
370#endif
371
[756]372#if 1
[231]373 void keyPressEvent(QKeyEvent *aE)
374 {
[756]375 qDebug() << "KEY PRESS : cnt" << aE->count()
[231]376 << "rep" << aE->isAutoRepeat()
[611]377 << "key" << qDebugFmtHex(aE->key())
378 << "mods" << qDebugFmtHex(aE->modifiers())
[231]379 << "text" << aE->text()
[611]380 << qDebugFmtHex((aE->text().isEmpty() ? 0 :
381 aE->text()[0].unicode()));
[231]382 }
383
384 void keyReleaseEvent(QKeyEvent *aE)
385 {
[756]386 qDebug() << "KEY RELEASE : cnt" << aE->count()
[231]387 << "rep" << aE->isAutoRepeat()
[611]388 << "key" << qDebugFmtHex(aE->key())
389 << "mods" << qDebugFmtHex(aE->modifiers())
[231]390 << "text" << aE->text()
[611]391 << qDebugFmtHex((aE->text().isEmpty() ? 0 :
392 aE->text()[0].unicode()));
[231]393 }
394#endif
395
[488]396#if 0
[481]397 // QCursor shape test
398 void mousePressEvent(QMouseEvent *aE)
399 {
400 static int shape = 0;
401 if (aE->button() == Qt::LeftButton)
402 ++shape;
403 else
404 --shape;
405 shape = (Qt::LastCursor + 1 + shape) % (Qt::LastCursor + 1);
406 setCursor(QCursor((Qt::CursorShape)shape));
407 }
408#endif
409
[231]410#if 0
[304]411 void mousePressEvent(QMouseEvent *aE)
[231]412 {
413 qDebug() << __FUNCTION__ << ": btn" << aE->button()
[611]414 << "btns" << qDebugFmtHex(aE->buttons())
415 << "mods" << qDebugFmtHex(aE->modifiers())
[231]416 << "gpos" << aE->globalPos() << "pos" << aE->pos();
[304]417
418 ++mPressed;
419 update();
[231]420 }
421
[304]422 void mouseReleaseEvent(QMouseEvent *aE)
[231]423 {
424 qDebug() << __FUNCTION__ << ": btn" << aE->button()
[611]425 << "btns" << qDebugFmtHex(aE->buttons())
426 << "mods" << qDebugFmtHex(aE->modifiers())
[231]427 << "gpos" << aE->globalPos() << "pos" << aE->pos();
428 }
429
[304]430 void mouseMoveEvent(QMouseEvent *aE)
[231]431 {
432 qDebug() << __FUNCTION__ << ": btn" << aE->button()
[611]433 << "btns" << qDebugFmtHex(aE->buttons())
434 << "mods" << qDebugFmtHex(aE->modifiers())
[231]435 << "gpos" << aE->globalPos() << "pos" << aE->pos();
436 }
437#endif
438
439#if 0
440 virtual void enterEvent(QEvent *event)
441 {
442 qDebug() << __FUNCTION__ << ":";
443 }
444
445 virtual void leaveEvent(QEvent *event)
446 {
447 qDebug() << __FUNCTION__ << ":";
448 }
449#endif
450
451#if 0
452 void contextMenuEvent(QContextMenuEvent *aE)
453 {
454 QMenu menu;
455 menu.addAction(QLatin1String("Action &1"));
456 menu.addAction(QLatin1String("Action &2"));
457 menu.exec(aE->globalPos());
458 }
459#endif
460
461#if 0
462 void timerEvent(QTimerEvent *aE)
463 {
464 qDebug() << __FUNCTION__ << ": id" << aE->timerId();
465 }
466#endif
[304]467
[499]468 bool event(QEvent *aE)
469 {
470 switch (aE->type())
471 {
[501]472#if 0
[499]473 case QEvent::Enter:
474 qDebug() << this << "Enter";
475 break;
476 case QEvent::Leave:
477 qDebug() << this << "Leave";
478 break;
479 case QEvent::NonClientAreaMouseMove:
480 case QEvent::NonClientAreaMouseButtonPress:
481 case QEvent::NonClientAreaMouseButtonRelease:
482 case QEvent::NonClientAreaMouseButtonDblClick: {
483 QMouseEvent *me = static_cast<QMouseEvent*>(aE);
484 qDebug() << this << aE->type() << ": btn" << me->button()
[611]485 << "btns" << qDebugFmtHex(me->buttons())
486 << "mods" << qDebugFmtHex(me->modifiers())
[499]487 << "gpos" << me->globalPos() << "pos" << me->pos();
488 break;
489 }
490#endif
491 default:
492 break;
493 }
494
495 return QWidget::event(aE);
496 }
497
[304]498private:
499
500 int mPressed;
[231]501};
502
[351]503void testCodec(const char *title, const QString &sample, QTextCodec *codec)
504{
505 // test console output
506
507 printf("%s : Unicode (source) : ", title);
508 foreach (QChar ch, sample)
509 printf("%hX ", ch.unicode());
510 printf("\n");
511
512 QByteArray eightbit = codec->fromUnicode(sample);
513 printf("%s : 8-bit (as is) : %s\n", title, eightbit.data());
514
515 QString sample2 = codec->toUnicode(eightbit);
516 printf("%s : Unicode (result) : ", title);
517 foreach (QChar ch, sample2)
518 printf("%hX ", ch.unicode());
519 printf("\n");
520
521 if (sample != sample2)
522 qWarning() << "Source and resulting Unicode differ!";
523
524 qWarning() << "";
525
526 // test GUI output (both window title and window text)
527
528 QString combined = QString("%1 : %2").arg(QLatin1String(title), sample);
529 QMessageBox mbox;
530 mbox.setWindowTitle(combined);
531 mbox.setText(combined);
532 mbox.exec();
533}
534
[231]535int main(int argc, char **argv)
536{
[625]537#if 0
[341]538 ////////////////////////////////////////////////////////////////////////////
539 // Text mode
540
541 QCoreApplication app(argc, argv);
542
[625]543#if 0
[536]544 //--------------------------------------------------------------------------
[611]545 // Simple QProcess test
546 QProcess cmd;
547 QStringList params;
548 params << "/c" << "ver";
549 cmd.start("cmd", params, QIODevice::ReadOnly);
550 cmd.waitForStarted();
551 cmd.waitForFinished();
552 PRINT_EXPR(cmd.readAll());
553#endif
554
555#if 0
556 //--------------------------------------------------------------------------
[536]557 // QFileInfo test
558 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/src/corelib/global/qt_windows.h")).isExecutable());
559 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/src/corelib/global/qt_os2.h")).isExecutable());
560 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/configure.cmd")).isExecutable());
561 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/configure.exe")).isExecutable());
562 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/bin/qmake.exe")).isExecutable());
563 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/bin/QtCore4.dll")).isExecutable());
564 PRINT_EXPR(QFileInfo(QLatin1String("../../qt4/bin")).isExecutable());
565#endif
566
[368]567#if 0
568 //--------------------------------------------------------------------------
569 // QTextStream test
570
571 QFile file("widget.cpp");
572 file.open(QIODevice::ReadOnly);
573 QTextStream text(&file);
574 QString str = text.readAll();
575 file.close();
576 qWarning() << "Read" << str.length() << "chars from widget.cpp";
577#endif
578
579#if 0
580 //--------------------------------------------------------------------------
581 // absolute/relative path test
582 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("../aaa"));
583 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("aaa"));
584 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("/aaa"));
585 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("\\aaa"));
586 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("D:\\aaa"));
587 qWarning() << "1" << QDir(QLatin1String("C:\\OS2")).absoluteFilePath(QLatin1String("D:aaa"));
588
589 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("../aaa"));
590 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("aaa"));
591 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("/aaa"));
592 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("\\aaa"));
593 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("D:\\aaa"));
594 qWarning() << "2" << QDir(QLatin1String(".")).absoluteFilePath(QLatin1String("D:aaa"));
595
596 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("../aaa"));
597 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("aaa"));
598 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("/aaa"));
599 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("\\aaa"));
600 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("D:\\aaa"));
601 qWarning() << "3" << QDir(QLatin1String("D:bbb")).absoluteFilePath(QLatin1String("D:aaa"));
602
603 qWarning() << "4" << QDir(QLatin1String("E:bbb")).absoluteFilePath(QLatin1String("D:aaa"));
604 qWarning() << "4" << QDir(QLatin1String("E:bbb")).absoluteFilePath(QLatin1String("bbb"));
605 qWarning() << "4" << QDir(QLatin1String("C:bbb")).absoluteFilePath(QLatin1String("bbb"));
606#endif
607
[380]608#if 0
[368]609 //--------------------------------------------------------------------------
610 // QDir::mkdir/mkpath test
611 PRINT_EXPR(QDir().mkdir("some_dir"));
612 PRINT_EXPR(QFile::exists("some_dir"));
613 PRINT_EXPR(QDir().rmdir("some_dir"));
614
615 PRINT_EXPR(QDir().mkdir("some_dir/subdir"));
616 PRINT_EXPR(QFile::exists("some_dir/subdir"));
617 PRINT_EXPR(QDir().rmdir("some_dir/subdir"));
618
619 PRINT_EXPR(QDir().mkpath("some_dir/subdir"));
620 PRINT_EXPR(QFile::exists("some_dir/subdir"));
621 PRINT_EXPR(QDir().rmpath("some_dir/subdir"));
622
623 PRINT_EXPR(QDir("C:/").mkpath("some_dir/subdir"));
624 PRINT_EXPR(QFile::exists("C:/some_dir/subdir"));
625 PRINT_EXPR(QDir("C:/").rmpath("some_dir/subdir"));
626
627 PRINT_EXPR(QDir("C:/").mkdir("/aaa"));
628 PRINT_EXPR(QFile::exists("C:/aaa"));
629 PRINT_EXPR(QDir("C:/").rmdir("/aaa"));
630#endif
631
632#if 0
633 //--------------------------------------------------------------------------
634 // QLibraryInfo test
635 qWarning() << "QLibraryInfo::buildKey :" << QLibraryInfo::buildKey();
636 qWarning() << "QLibraryInfo::licensedProducts :" << QLibraryInfo::licensedProducts();
637 qWarning() << "QLibraryInfo::licensee :" << QLibraryInfo::licensee();
638 #define PRINT_LOC(L) qWarning() << #L << ":" << QLibraryInfo::location(L)
639 PRINT_LOC(QLibraryInfo::PrefixPath);
640 PRINT_LOC(QLibraryInfo::DocumentationPath);
641 PRINT_LOC(QLibraryInfo::HeadersPath);
642 PRINT_LOC(QLibraryInfo::LibrariesPath);
643 PRINT_LOC(QLibraryInfo::BinariesPath);
644 PRINT_LOC(QLibraryInfo::PluginsPath);
645 PRINT_LOC(QLibraryInfo::DataPath);
646 PRINT_LOC(QLibraryInfo::TranslationsPath);
647 PRINT_LOC(QLibraryInfo::SettingsPath);
648 PRINT_LOC(QLibraryInfo::DemosPath);
649 PRINT_LOC(QLibraryInfo::ExamplesPath);
650 #undef PRINT_LOC
651#endif
652
[435]653#if 0
[426]654 //--------------------------------------------------------------------------
655 // QSettings test
656
657 QSettings sysOrgSet(QSettings::IniFormat, QSettings::SystemScope,
658 QLatin1String("MySoft"));
659 QSettings sysAppSet(QSettings::IniFormat, QSettings::SystemScope,
660 QLatin1String("MySoft"), QLatin1String("MyApp"));
661 QSettings userOrgSet(QSettings::IniFormat, QSettings::UserScope,
662 QLatin1String("MySoft"));
663 QSettings userAppSet(QSettings::IniFormat, QSettings::UserScope,
664 QLatin1String("MySoft"), QLatin1String("MyApp"));
665
666 QList<QSettings *> sets;
667 sets << &sysOrgSet << &sysAppSet << &userOrgSet << &userAppSet;
668
669 foreach (QSettings *set, sets) {
670 set->setValue("Time", QDateTime::currentDateTime());
671 }
672
[435]673 qWarning() << "Modified Time key in MySoft/MyApp (system & user)";
[426]674#endif
675
[351]676#else
677 ////////////////////////////////////////////////////////////////////////////
678 // GUI
679
680 QApplication app(argc, argv);
[380]681 app.setQuitOnLastWindowClosed(true);
[351]682
[756]683#if 0
[351]684 //--------------------------------------------------------------------------
685 // locale test
686
687 QLocale locale = QLocale::system();
688
689 qWarning() << "Library paths :" << QApplication::libraryPaths();
690 qWarning() << "";
[341]691 qWarning() << "Available codecs :\n" << QTextCodec::availableCodecs();
692 qWarning() << "";
[625]693 qWarning() << "System locale :" << locale.name();
694 qWarning() << "";
[341]695 qWarning() << "Codec for locale :" << QTextCodec::codecForLocale()->name();
696 qWarning() << " Aliases :" << QTextCodec::codecForLocale()->aliases();
697 qWarning() << "";
[351]698 qWarning() << "Country for locale :" << QLocale::countryToString(locale.country())
699 << "[" << locale.country() << "]";
700 qWarning() << "Language for locale :" << QLocale::languageToString(locale.language())
701 << "[" << locale.language() << "]";
702 qWarning() << "";
[625]703 qWarning() << "Current date :" << locale.toString(QDate::currentDate(), QLocale::ShortFormat);
704 qWarning() << "Current date (long) :" << locale.toString(QDate::currentDate(), QLocale::LongFormat);
705 qWarning() << "Current time :" << locale.toString(QTime::currentTime(), QLocale::ShortFormat);
706 qWarning() << "Current time (long) :" << locale.toString(QTime::currentTime(), QLocale::LongFormat);
707 qWarning() << "Current date time :" << locale.toString(QDateTime::currentDateTime(), QLocale::ShortFormat);
708 qWarning() << "Current datetime (l):" << locale.toString(QDateTime::currentDateTime(), QLocale::LongFormat);
[341]709
[351]710 testCodec("First 3 months",
711 QString("%1, %2, %3").arg(locale.standaloneMonthName(1),
712 locale.standaloneMonthName(2),
713 locale.standaloneMonthName(3)),
714 QTextCodec::codecForLocale());
715 return 0;
716#endif
[341]717
[756]718#if 1
[341]719 QRect r = QApplication::desktop()->availableGeometry();
[231]720 MyWidget widget;
721 widget.resize(100, 100);
[341]722 widget.move(r.width() - 200, r.height() - 200);
[231]723
724 widget.show();
[351]725#endif
[304]726
[499]727#if 0
[488]728 //--------------------------------------------------------------------------
729 // QDesktopServices test
730 {
731 for (int i = 0; i <= 10; ++i) {
732 qWarning() << "StandardLocation" << i
733 << QDesktopServices::
734 storageLocation((QDesktopServices::StandardLocation)i);
735 }
736
737 PRINT_EXPR(QDesktopServices::openUrl(QUrl::fromLocalFile(QDir::currentPath())));
738 PRINT_EXPR(QDesktopServices::openUrl(QUrl("file:///C:/OS2/BITMAP/OCEAN.BMP")));
739 PRINT_EXPR(QDesktopServices::openUrl(QUrl("mailto:user@example.com")));
740 PRINT_EXPR(QDesktopServices::openUrl(QUrl("http://www.ru")));
741 }
742#endif
743
[536]744#if 0
[380]745 //--------------------------------------------------------------------------
746 // QFontDialog test
[231]747 {
[501]748 int appFont1, appFont2;
749
750 PRINT_EXPR((appFont1 = QFontDatabase::addApplicationFont(
751 QLatin1String("fonts/Earthqua.ttf"))));
752
753 QByteArray fontData;
754 QFile fontFile(QLatin1String("fonts/NATIONFD.TTF"));
755 if (fontFile.open(QIODevice::ReadOnly)) {
756 fontData = fontFile.readAll();
757 fontFile.close();
758 }
759 PRINT_EXPR((appFont2 = QFontDatabase::addApplicationFontFromData(fontData)));
760
761 PRINT_EXPR(QFontDatabase::applicationFontFamilies(appFont1));
762 PRINT_EXPR(QFontDatabase::applicationFontFamilies(appFont2));
763
[231]764 QFontDialog fntDlg;
765 fntDlg.exec();
[304]766
[501]767 PRINT_EXPR(QFontDatabase::removeApplicationFont(appFont1));
768 PRINT_EXPR(QFontDatabase::applicationFontFamilies(appFont1));
769
770 fntDlg.exec();
771
[231]772 {
773 QFont font("MyCoolFont");
774 QFontInfo info(font);
775 qDebug() << info.family();
776 }
777 }
778#endif
779
[435]780#if 0
[380]781 //--------------------------------------------------------------------------
782 // QFileDialog test
783 {
784 QFileDialog dlg;
785
786 dlg.setFileMode(QFileDialog::ExistingFile);
787 //dlg.setFilter(QDir::Dirs | QDir::Files | QDir::Drives);
[625]788 dlg.setNameFilter("*.exe;;*");
[380]789 dlg.selectFile("mplayer.exe");
790 dlg.exec();
791
792 //PRINT_EXPR(QFileDialog::getOpenFileName());
793 }
794#endif
795
[231]796#if 0
[300]797 QSound snd2("C:/MMOS2/SOUNDS/DESKTOP/dsk_shut.wav");
798 snd2.setLoops(2);
799 snd2.play();
800
801 QSound snd1("C:/MMOS2/SOUNDS/DESKTOP/dsk_strt.wav");
802 snd1.setLoops(3);
803 snd1.play();
804#endif
805
806#if 0
[231]807 widget.startTimer(1000);
808 widget.startTimer(2000);
809 widget.startTimer(4000);
810#endif
811
812#if 0
813 qDebug() << "------------- before min" << widget.geometry() << widget.frameGeometry();
814 widget.showMinimized();
815 qDebug() << "------------- after min" << widget.geometry() << widget.frameGeometry();
816 widget.move(100, 100);
817 qDebug() << "------------- after move" << widget.geometry() << widget.frameGeometry();
818 widget.showNormal();
819 qDebug() << "------------- after norm" << widget.geometry() << widget.frameGeometry();
820 widget.showFullScreen();
821 qDebug() << "------------- after full" << widget.geometry() << widget.frameGeometry();
822#endif
823
[501]824 bool haveVisibleTops = false;
825 foreach(QWidget *top, app.topLevelWidgets()) {
826 if (top->isVisible()) {
827 haveVisibleTops = true;
828 break;
829 }
830 }
831
832 if (haveVisibleTops)
[380]833 return app.exec();
834
835 return 0;
[341]836#endif
[231]837}
[304]838
839#include "widget.moc"
Note: See TracBrowser for help on using the repository browser.