QXRD  0.11.16
qxrdwelcomewindow.cpp
Go to the documentation of this file.
1 #include "qxrdwelcomewindow.h"
2 #include "ui_qxrdwelcomewindow.h"
4 #include "qxrdapplication.h"
5 #include <QCloseEvent>
6 #include <QMessageBox>
7 #include <QThread>
8 
10  QMainWindow(NULL),
11  ui(new Ui::QxrdWelcomeWindow),
12  m_Application(app),
13  m_InsertRow(5),
14  m_SignalMapper(NULL),
16 {
17  ui->setupUi(this);
18 
19  m_StatusMsg = new QLabel(NULL);
20  m_StatusMsg -> setMinimumWidth(500);
21  m_StatusMsg -> setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
22  m_StatusMsg -> setToolTip(tr("Status Messages"));
23 
24  statusBar() -> addPermanentWidget(m_StatusMsg);
25 
26  connect(&m_StatusTimer, &QTimer::timeout, this, &QxrdWelcomeWindow::clearStatusMessage);
27 
28  connect(ui->m_ActionEditApplicationPreferences, &QAction::triggered, m_Application, &QxrdApplication::editGlobalPreferences);
29  connect(ui->m_ActionNewExperiment, &QAction::triggered, m_Application, &QxrdApplication::chooseNewExperiment);
30  connect(ui->m_ActionOpenExperiment, &QAction::triggered, m_Application, &QxrdApplication::chooseExistingExperiment);
31  connect(ui->m_ActionExitApplication, &QAction::triggered, m_Application, &QxrdApplication::possiblyQuit);
32 
33  connect(ui->m_NewExperiment, &QAbstractButton::clicked, ui->m_ActionNewExperiment, &QAction::trigger);
34  connect(ui->m_OpenExistingExperiment, &QAbstractButton::clicked, ui->m_ActionOpenExperiment, &QAction::trigger);
35 
36  connect(&m_SignalMapper, (void (QSignalMapper::*)(const QString&)) &QSignalMapper::mapped,
38 
39  QStringList recents = m_Application->get_RecentExperiments();
40 
41  foreach (QString recent, recents) {
42  appendRecentExperiment(recent);
43  }
44 
45  setupRecentExperimentsMenu(ui->m_ActionOpenRecentExperiment);
46 }
47 
49 {
50  delete ui;
51 }
52 
54 {
55  QMainWindow::changeEvent(e);
56  switch (e->type()) {
57  case QEvent::LanguageChange:
58  ui->retranslateUi(this);
59  break;
60  default:
61  break;
62  }
63 }
64 
66 {
67  m_RecentExperimentsMenu = new QMenu(this);
68 
69  action->setMenu(m_RecentExperimentsMenu);
70 
72 }
73 
75 {
76 // printMessage("Populating recent experiments menu");
77 
78  m_RecentExperimentsMenu->clear();
79 
80  QStringList recent = m_Application->get_RecentExperiments();
81 
82  foreach (QString exp, recent) {
83 // printf("Recent experiment: %s\n", qPrintable(exp));
84 
85  QAction *action = new QAction(exp, m_RecentExperimentsMenu);
86  connect(action, &QAction::triggered, &m_SignalMapper, (void (QSignalMapper::*) ()) &QSignalMapper::map);
87  m_SignalMapper.setMapping(action, exp);
88 
89  m_RecentExperimentsMenu -> addAction(action);
90  }
91 }
92 
94 {
96 
97  item->setText(title);
98 
99  ui->m_GridLayout->addWidget(item, m_InsertRow++, 0, 1, 2);
100 
101  connect(item, &QAbstractButton::clicked, &m_SignalMapper, (void (QSignalMapper::*) ()) &QSignalMapper::map);
102 
103  m_SignalMapper.setMapping(item, title);
104 }
105 
106 void QxrdWelcomeWindow::closeEvent ( QCloseEvent * event )
107 {
108  QMainWindow::closeEvent(event);
110 // event -> accept();
111 // } else {
112 // event -> ignore();
113 // }
114 }
115 
117 {
118  // printf("QxrdWindow::possiblyClose()\n");
119  if (wantToClose()) {
120  close();
121  }
122 }
123 
125 {
126  THREAD_CHECK;
127 
128  return QMessageBox::question(this, tr("Really Close?"),
129  tr("Do you really want to close the window?"),
130  QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok;
131 }
132 
133 void QxrdWelcomeWindow::readSettings(QSettings *settings, QString section)
134 {
135  if (settings) {
136  QByteArray geometry = settings->value(section+"-geometry").toByteArray();
137  QByteArray winstate = settings->value(section+"-state").toByteArray();
138 
139  if (!geometry.isEmpty() && !winstate.isEmpty()) {
140  restoreGeometry(geometry);
141  restoreState(winstate,1);
142  }
143 
144  QcepProperty::readSettings(this, settings, section);
145  }
146 }
147 
148 void QxrdWelcomeWindow::writeSettings(QSettings *settings, QString section)
149 {
150  if (settings) {
151  settings->setValue(section+"-geometry", saveGeometry());
152  settings->setValue(section+"-state", saveState(1));
153 
154  QcepProperty::writeSettings(this, settings, section);
155  }
156 }
157 
159 {
160  m_StatusMsg -> setText(msg);
161 
162  m_StatusTimer.start(5000);
163 }
164 
166 {
167  m_StatusMsg -> setText("");
168 }
169 
171 {
172  QString experiment = m_Application->get_RecentExperiments().value(0);
173 
174  if (experiment.length()) {
175  m_Application->openExperiment(experiment);
176  }
177 }
void writeSettings(QSettings *settings, QString section)
QxrdApplication * m_Application
static void readSettings(QObject *object, QSettings *settings, QString section)
void setupRecentExperimentsMenu(QAction *action)
Ui::QxrdWelcomeWindow * ui
void chooseExistingExperiment()
void appendRecentExperiment(QString title)
void populateRecentExperimentsMenu()
void openRecentExperiment(QString path)
static void writeSettings(QObject *object, QSettings *settings, QString section)
void displayMessage(QString msg)
void changeEvent(QEvent *e)
void readSettings(QSettings *settings, QString section)
QSignalMapper m_SignalMapper
#define THREAD_CHECK
Definition: qcepmacros.h:11
void closeEvent(QCloseEvent *event)
QMenu * m_RecentExperimentsMenu
void openExperiment(QString path)
QxrdWelcomeWindow(QxrdApplication *app)