1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3 #include "preferences.h"
6 MainWindow::MainWindow(QWidget *parent) :
14 setAttribute(Qt::WA_Maemo5AutoOrientation);
15 QDesktopWidget* q=QApplication::desktop();
16 connect(q,SIGNAL(resized(int)),this,SLOT(reorient()));
18 QDir packDir(":/packs");
19 QStringList packList=packDir.entryList();
21 QListIterator<QString> packNamesI(packList);
22 while(packNamesI.hasNext())
24 QString packName=packNamesI.next().section(".",0,0);
29 QSettings settings("paul","vexed");
30 settings.beginGroup("save");
31 QString savedTitle=settings.value("pack","Classic Levels").toString();
32 int savedLevelNo=settings.value("level",0).toInt();
33 loadPack(savedTitle,savedLevelNo);
36 MainWindow::~MainWindow()
41 void MainWindow::changeEvent(QEvent *e)
43 QMainWindow::changeEvent(e);
45 case QEvent::LanguageChange:
46 ui->retranslateUi(this);
53 void MainWindow::reorient()
56 ui->buttonsPortrait->removeWidget(ui->prevLevel);
57 ui->buttonsPortrait->removeWidget(ui->nextLevel);
58 ui->buttonsPortrait->removeWidget(ui->reload);
59 ui->buttonsPortrait->removeWidget(ui->undo);
61 ui->undoLandscape->removeWidget(ui->undo);
62 ui->buttonsLandscape->removeWidget(ui->prevLevel);
63 ui->buttonsLandscape->removeWidget(ui->nextLevel);
64 ui->buttonsLandscape->removeWidget(ui->reload);
66 QDesktopWidget* q=QApplication::desktop();
67 if(q->height()>q->width())
71 ui->buttonsPortrait->addWidget(ui->prevLevel);
72 ui->buttonsPortrait->addWidget(ui->reload);
73 ui->buttonsPortrait->addWidget(ui->nextLevel);
74 ui->buttonsPortrait->addWidget(ui->undo);
75 //ui->buttonsPortrait->layout();
78 ui->buttonsLandscape->insertWidget(0,ui->nextLevel,1,Qt::AlignLeft);
79 ui->buttonsLandscape->insertWidget(0,ui->reload,1,Qt::AlignLeft);
80 ui->buttonsLandscape->insertWidget(0,ui->prevLevel,1,Qt::AlignLeft);
81 ui->undoLandscape->addWidget(ui->undo);
82 //ui->buttonsLandscape->layout();
86 void MainWindow::loadLevel()
88 PlayField *pf=pack->levelAt(levelNo);
89 ui->playwidget->setPlayField(pf);
91 QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<"/"<<pack->levels.size()<<")";
92 ui->levelTitle->setText(title);
95 void MainWindow::loadPack(const QString& packName, int levelToLoad)
98 QString fileName(":/packs/");
99 fileName.append(packName).append(".ini");
100 pack=new LevelPack(fileName);
105 void MainWindow::movesChanged(int moves)
107 PlayField *pf=pack->levelAt(levelNo);
108 const QString sol=pf->getSolution();
109 int total=sol.length()/2;
112 QTextStream movesBanner(&q);
113 movesBanner<<moves<<"/"<<total;
115 movesBanner<<"<b>"<<score<<"</b>";
117 ui->moves->setText(q);
120 void MainWindow::solved(int moves)
126 int MainWindow::hiscore(int score)
128 QSettings settings("paul","vexed");
129 PlayField *pf=pack->levelAt(levelNo);
130 QString title=pf->title;
131 settings.beginGroup("score");
132 settings.beginGroup(pack->getTitle());
133 QString saved=settings.value(title,"9999").toString();
135 int savedMoves=saved.toInt(&ok);
136 if(!ok) savedMoves=9999;
140 settings.setValue(title,score);
144 void MainWindow::openPreferences()
146 Preferences pref(packNames,pack->getTitle(),this);
147 if(pref.exec()==QDialog::Accepted)
149 loadPack(pref.getSelectedPack(),0);
153 void MainWindow::howToPlay()
158 // save current pack and level to config
159 // they are used to restore on start
160 // TODO: save playfield (and undo?)
161 void MainWindow::saveState()
163 QSettings settings("paul","vexed");
164 settings.beginGroup("save");
165 settings.setValue("pack",pack->getTitle());
166 settings.setValue("level",levelNo);