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 loadPack(Settings().savedPackName(),Settings().savedLevelNo());
32 MainWindow::~MainWindow()
37 void MainWindow::changeEvent(QEvent *e)
39 QMainWindow::changeEvent(e);
41 case QEvent::LanguageChange:
42 ui->retranslateUi(this);
49 void MainWindow::reorient()
52 ui->buttonsPortrait->removeWidget(ui->prevLevel);
53 ui->buttonsPortrait->removeWidget(ui->nextLevel);
54 ui->buttonsPortrait->removeWidget(ui->reload);
55 ui->buttonsPortrait->removeWidget(ui->undo);
57 ui->undoLandscape->removeWidget(ui->undo);
58 ui->buttonsLandscape->removeWidget(ui->prevLevel);
59 ui->buttonsLandscape->removeWidget(ui->nextLevel);
60 ui->buttonsLandscape->removeWidget(ui->reload);
62 QDesktopWidget* q=QApplication::desktop();
63 if(q->height()>q->width())
67 ui->buttonsPortrait->addWidget(ui->prevLevel);
68 ui->buttonsPortrait->addWidget(ui->reload);
69 ui->buttonsPortrait->addWidget(ui->nextLevel);
70 ui->buttonsPortrait->addWidget(ui->undo);
71 //ui->buttonsPortrait->layout();
74 ui->buttonsLandscape->insertWidget(0,ui->nextLevel,1,Qt::AlignLeft);
75 ui->buttonsLandscape->insertWidget(0,ui->reload,1,Qt::AlignLeft);
76 ui->buttonsLandscape->insertWidget(0,ui->prevLevel,1,Qt::AlignLeft);
77 ui->undoLandscape->addWidget(ui->undo);
78 //ui->buttonsLandscape->layout();
82 void MainWindow::loadLevel()
84 PlayField *pf=pack->levelAt(levelNo);
85 ui->playwidget->setPlayField(pf);
87 QTextStream(&title)<<pf->title<<" ("<<levelNo+1<<" of "<<pack->levels.size()<<")";
88 levelHiscore=Settings().getHighscore(pack->getTitle(),pf->title);
89 ui->levelTitle->setText(title);
93 void MainWindow::loadPack(const QString& packName, int levelToLoad)
96 QString fileName(":/packs/");
97 fileName.append(packName).append(".ini");
98 pack=new LevelPack(fileName);
103 void MainWindow::movesChanged(int moves)
105 PlayField *pf=pack->levelAt(levelNo);
106 const QString sol=pf->getSolution();
107 int total=sol.length()/2;
108 //int score=Settings().getHighscore(pack->getTitle(),pf->title);
110 QTextStream movesBanner(&q);
111 movesBanner<<moves<<"/"<<total;
112 if(levelHiscore!=HS::NO_SCORE)
113 movesBanner<<"(<b>"<<levelHiscore<<"</b>)";
114 ui->moves->setText(q);
117 void MainWindow::solved(int moves)
119 PlayField *pf=pack->levelAt(levelNo);
120 Settings().saveHiscore(pack->getTitle(),pf->title, moves);
124 void MainWindow::openPreferences()
126 Preferences pref(packNames,pack->getTitle(),this);
127 if(pref.exec()==QDialog::Accepted)
129 loadPack(pref.getSelectedPack(),0);
133 void MainWindow::howToPlay()
138 // save current pack and level to config
139 // they are used to restore on start
140 // TODO: save playfield (and undo?)
141 void MainWindow::saveState()
143 Settings().saveGame(pack->getTitle(),levelNo);
146 void MainWindow::loadNextLevel()
148 if(levelNo<(pack->size()-1))