***************************************************************************/
#include <QtGui>
+#include <QtCore>
+
+#include "global.h"
#include "mainwin.h"
#include "channelwidget.h"
#include "serverlist.h"
-
-#include "core.h"
-#include "server.h"
+#include "coreconnectdlg.h"
MainWin::MainWin() : QMainWindow() {
+ ui.setupUi(this);
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::setupMenus() {
- fileMenu = menuBar()->addMenu(tr("&File"));
- serverListAct = fileMenu->addAction(QIcon(":/default/server.png"), tr("&Server List..."), this, SLOT(showServerList()), tr("F7"));
- fileMenu->addSeparator();
- quitAct = fileMenu->addAction(QIcon(":/default/exit.png"), tr("&Quit"), qApp, SLOT(quit()), tr("CTRL+Q"));
-
- editMenu = menuBar()->addMenu(tr("&Edit"));
- editMenu->setEnabled(0);
-
- ircMenu = menuBar()->addMenu(tr("&IRC"));
- ircMenu->setEnabled(0);
-
- serverMenu = menuBar()->addMenu(tr("Ser&ver"));
- serverMenu->setEnabled(0);
-
- windowMenu = menuBar()->addMenu(tr("&Window"));
- windowMenu->setEnabled(0);
-
- settingsMenu = menuBar()->addMenu(tr("&Settings"));
- identitiesAct = settingsMenu->addAction(QIcon(":/default/identity.png"), tr("&Identities..."), serverListDlg, SLOT(editIdentities()));
- settingsMenu->addSeparator();
- configAct = settingsMenu->addAction(QIcon(":/default/configure.png"), tr("&Configure Quassel..."));
- configAct->setEnabled(0);
-
- helpMenu = menuBar()->addMenu(tr("&Help"));
- aboutAct = helpMenu->addAction(tr("&About"));
- aboutAct->setEnabled(0);
- aboutQtAct = helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
-
+ connect(ui.actionNetworkList, SIGNAL(activated()), this, SLOT(showServerList()));
+ connect(ui.actionEditIdentities, SIGNAL(activated()), serverListDlg, SLOT(editIdentities()));
+}
- //toolBar = new QToolBar("Test", this);
- //toolBar->addAction(identitiesAct);
- //addToolBar(Qt::TopToolBarArea, toolBar);
+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::showServerList() {
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();
+ //}
+}