1 #include "mainwindow.h"
3 #include <QxtConfirmationMessage>
4 #include <QxtProgressLabel>
5 #include <QxtConfigDialog>
6 #include <QxtApplication>
7 #include <QProgressBar>
10 #include <QCloseEvent>
13 #if QT_VERSION >= 0x040200
14 #include <QCalendarWidget>
18 MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags)
19 : QMainWindow(parent, flags)
23 ui.tabWidget->setTabContextMenuPolicy(Qt::ActionsContextMenu);
25 connect(ui.actionQuit, SIGNAL(triggered()), this, SLOT(close()));
26 connect(ui.actionAddTab, SIGNAL(triggered()), this, SLOT(addTab()));
27 connect(ui.actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
28 connect(ui.actionAboutQxtGui, SIGNAL(triggered()), this, SLOT(aboutQxtGui()));
29 connect(ui.actionSwitchLayoutDirection, SIGNAL(triggered()), this, SLOT(switchLayoutDirection()));
30 connect(ui.actionConfigure, SIGNAL(triggered()), this, SLOT(configure()));
32 if (!qxtApp->addHotKey(Qt::ControlModifier | Qt::ShiftModifier | Qt::AltModifier, Qt::Key_S, this, "toggleVisibility"))
33 ui.labelVisibility->hide();
36 MainWindow::~MainWindow()
40 void MainWindow::closeEvent(QCloseEvent* event)
42 #if QT_VERSION >= 0x040200
43 static const QString title("QxtConfirmationMessage");
44 static const QString text(tr("Are you sure you want to quit?"));
45 if (QxtConfirmationMessage::confirm(this, title, text) == QMessageBox::No)
50 void MainWindow::aboutQxtGui()
52 QMessageBox::information(this, tr("About QxtGui"),
53 tr("<h3>About QxtGui</h3>"
54 "<p>QxtGui is part of Qxt, the Qt eXTension library <"
55 "<a href=\"http://libqxt.sf.net\">http://libqxt.sf.net</a>>.</p>"));
58 void MainWindow::addTab()
60 Tab* tab = new Tab(ui.tabWidget);
61 ui.tabWidget->addTab(tab, tr("Tab %1").arg(ui.tabWidget->count() + 1));
62 QAction* act = ui.tabWidget->addTabAction(ui.tabWidget->indexOf(tab), tr("Close"), tab, SLOT(close()), tr("Ctrl+W"));
64 ui.tabWidget->setCurrentWidget(tab);
65 connect(tab, SIGNAL(somethingHappened(const QString&)), statusBar(), SLOT(showMessage(const QString&)));
68 void MainWindow::switchLayoutDirection()
70 qApp->setLayoutDirection(layoutDirection() == Qt::LeftToRight ? Qt::RightToLeft : Qt::LeftToRight);
73 void MainWindow::toggleVisibility()
75 setVisible(!isVisible());
78 void MainWindow::createProgressBar()
80 QxtProgressLabel* label = new QxtProgressLabel(statusBar());
82 QProgressBar* bar = new QProgressBar(statusBar());
83 bar->setMaximumWidth(label->sizeHint().width() * 2);
84 bar->setRange(0, 120);
86 #if QT_VERSION >= 0x040200
87 QTimeLine* timeLine = new QTimeLine(120000, this);
88 timeLine->setFrameRange(0, 120);
90 connect(timeLine, SIGNAL(frameChanged(int)), bar, SLOT(setValue(int)));
91 connect(timeLine, SIGNAL(finished()), label, SLOT(restart()));
92 connect(bar, SIGNAL(valueChanged(int)), label, SLOT(setValue(int)));
96 statusBar()->addPermanentWidget(bar);
97 statusBar()->addPermanentWidget(label);
100 void MainWindow::configure()
102 QxtConfigDialog dialog(this);
103 dialog.setWindowTitle(tr("QxtConfigDialog"));
104 QTreeView* page2 = new QTreeView(&dialog);
105 page2->setModel(new QDirModel(page2));
106 QListWidget* page3 = new QListWidget(&dialog);
107 for (int i = 0; i < 100; ++i)
108 page3->addItem(QString::number(i));
109 dialog.addPage(page2, QIcon(":tree.png"), "A directory tree");
110 dialog.addPage(page3, QIcon(":list.png"), "Some kind of list");
111 #if QT_VERSION >= 0x040200
112 QCalendarWidget* page1 = new QCalendarWidget(&dialog);
113 dialog.addPage(page1, QIcon(":calendar.png"), "Calendar");