***************************************************************************/
#include <QtGui>
+#include <QtCore>
+
+#include "global.h"
#include "mainwin.h"
#include "channelwidget.h"
#include "serverlist.h"
+#include "coreconnectdlg.h"
MainWin::MainWin() : QMainWindow() {
setWindowTitle("Quassel IRC");
- setWindowIcon(QIcon(":/default/tux.png"));
+ setWindowIcon(QIcon(":/qirc-icon.png"));
setWindowIconText("Quassel IRC");
- workspace = new QWorkspace(this);
- setCentralWidget(workspace);
- ChannelWidget *cw = new ChannelWidget(this);
- workspace->addWindow(cw);
- //setCentralWidget(cw);
+
+ QSettings s;
+ s.beginGroup("Geometry");
+ resize(s.value("MainWinSize", QSize(500, 400)).toSize());
+ move(s.value("MainWinPos", QPoint(50, 50)).toPoint());
+ s.endGroup();
+
+ //workspace = new QWorkspace(this);
+ //setCentralWidget(workspace);
+ statusBar()->showMessage(tr("Waiting for core..."));
+ setEnabled(false);
+ show();
+ syncToCore();
+ setEnabled(true);
serverListDlg = new ServerListDlg(this);
serverListDlg->setVisible(serverListDlg->showOnStartup());
- //showServerList();
-
setupMenus();
- statusBar()->showMessage(tr("Ready"));
+ //identitiesAct = settingsMenu->addAction(QIcon(":/default/identity.png"), tr("&Identities..."), serverListDlg, SLOT(editIdentities()));
+ //showServerList();
+ IrcWidget *cw = new IrcWidget(this);
+ setCentralWidget(cw);
+ //workspace->addWindow(cw);
+ //cw->showMaximized();
+ statusBar()->showMessage(tr("Ready."));
+ cw->setFocus();
+}
+void MainWin::syncToCore() {
+ if(global->getData("CoreReady").toBool()) return;
+ // ok, apparently we are running as standalone GUI
+ coreConnectDlg = new CoreConnectDlg(this);
+ if(coreConnectDlg->exec() != QDialog::Accepted) {
+ //qApp->quit();
+ exit(1);
+ }
+ VarMap state = coreConnectDlg->getCoreState().toMap()["CoreData"].toMap();
+ delete coreConnectDlg;
+ QString key;
+ foreach(key, state.keys()) {
+ global->updateData(key, state[key]);
+ }
+ if(!global->getData("CoreReady").toBool()) {
+ QMessageBox::critical(this, tr("Fatal Error"), tr("<b>Could not synchronize with Quassel Core!</b><br>Quassel GUI will be aborted."), QMessageBox::Abort);
+ //qApp->quit();
+ exit(1);
+ }
}
void MainWin::setupMenus() {
aboutAct->setEnabled(0);
aboutQtAct = helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
-
//toolBar = new QToolBar("Test", this);
//toolBar->addAction(identitiesAct);
//addToolBar(Qt::TopToolBarArea, toolBar);
serverListDlg->show();
}
+void MainWin::closeEvent(QCloseEvent *event)
+{
+ //if (userReallyWantsToQuit()) {
+ QSettings s;
+ s.beginGroup("Geometry");
+ s.setValue("MainWinSize", size());
+ s.setValue("MainWinPos", pos());
+ s.endGroup();
+ event->accept();
+ //} else {
+ //event->ignore();
+ //}
+}