5 * th9x - http://code.google.com/p/th9x
6 * er9x - http://code.google.com/p/er9x
7 * gruvin9x - http://code.google.com/p/gruvin9x
9 * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
21 #include "splashlibrarydialog.h"
22 #include "ui_splashlibrarydialog.h"
25 #include "firmwareinterface.h"
28 SplashLibraryDialog::SplashLibraryDialog(QWidget
*parent
, QString
* filename
):
30 ui(new Ui::SplashLibraryDialog
),
31 splashFileName(filename
)
34 setWindowIcon(CompanionIcon("library.png"));
35 ui
->nextPage
->setIcon(CompanionIcon("arrow-right.png"));
36 ui
->prevPage
->setIcon(CompanionIcon("arrow-left.png"));
39 if (imageList
.size() > 20) {
40 ui
->nextPage
->setEnabled(true);
44 foreach(splashLabel
*sl
, findChildren
<splashLabel
*>()) {
45 connect(sl
, SIGNAL(buttonPressed(int)), this, SLOT(onButtonPressed(int)));
49 SplashLibraryDialog::~SplashLibraryDialog()
54 void SplashLibraryDialog::setupPage(int page
)
56 splashLabel
* sl
[] = { ui
->FwImage_01
, ui
->FwImage_02
, ui
->FwImage_03
, ui
->FwImage_04
,
57 ui
->FwImage_05
, ui
->FwImage_06
, ui
->FwImage_07
, ui
->FwImage_08
,
58 ui
->FwImage_09
, ui
->FwImage_10
, ui
->FwImage_11
, ui
->FwImage_12
,
59 ui
->FwImage_13
, ui
->FwImage_14
, ui
->FwImage_15
, ui
->FwImage_16
,
60 ui
->FwImage_17
, ui
->FwImage_18
, ui
->FwImage_19
, ui
->FwImage_20
};
61 for(int i
=0; i
<20; i
++) {
62 if ((i
+ 20 * page
) < imageList
.size()) {
63 QImage
image(imageList
.at(i
+ 20 * page
));
64 if (!image
.isNull()) {
65 sl
[i
]->setPixmap(makePixMap(image
));
66 sl
[i
]->setEnabled(true);
67 sl
[i
]->setId((i
+ 20 * page
));
68 sl
[i
]->setStyleSheet("border:1px solid; border-color:#999999;");
72 sl
[i
]->setDisabled(true);
73 sl
[i
]->setStyleSheet("border:1px;");
79 sl
[i
]->setDisabled(true);
80 sl
[i
]->setStyleSheet("border:1px;");
84 setWindowTitle(tr("Splash Library - page %1 of %2").arg(page
+ 1).arg(ceil((float) imageList
.size() / 20.0)));
87 void SplashLibraryDialog::getFileList()
90 if (g
.embedSplashes()) {
91 QDir
myRes(":/images/library");
92 QStringList tmp
= myRes
.entryList();
93 for (int i
= 0; i
< tmp
.size(); i
++) {
94 QFileInfo fileInfo
= tmp
.at(i
);
95 imageList
.append(":/images/library/" + fileInfo
.fileName());
98 QString libraryPath
= g
.libDir();
99 if (!libraryPath
.isEmpty()) {
100 if (QDir(libraryPath
).exists()) {
101 QStringList supportedImageFormats
;
102 for (int formatIndex
= 0; formatIndex
< QImageReader::supportedImageFormats().count(); formatIndex
++) {
103 supportedImageFormats
<< QLatin1String("*.") + QImageReader::supportedImageFormats()[formatIndex
];
105 QDir
myDir(libraryPath
);
106 myDir
.setNameFilters(supportedImageFormats
);
107 QStringList tmp
= myDir
.entryList();
108 for (int i
= 0; i
< tmp
.size(); i
++) {
109 QFileInfo fileInfo
= tmp
.at(i
);
110 QString filename
= libraryPath
+ "/" + fileInfo
.fileName();
111 QImage
image(filename
);
112 if (!image
.isNull()) {
113 imageList
.append(filename
);
116 QMessageBox::warning(this, CPN_STR_TTL_WARNING
, tr("Invalid image in library %1").arg(filename
));
121 if (imageList
.size() == 0) {
122 QMessageBox::information(this, CPN_STR_TTL_INFO
, tr("No valid image found in library, check your settings"));
123 QTimer::singleShot(0, this, SLOT(dclose()));
130 void SplashLibraryDialog::dclose()
135 void SplashLibraryDialog::onButtonPressed(int button
)
137 splashLabel
* myLabel
= qobject_cast
<splashLabel
*>(sender());
139 foreach(splashLabel
*sl
, findChildren
<splashLabel
*>()) {
140 if (sl
->isEnabled()) {
141 sl
->setStyleSheet("border:1px solid; border-color:#999999;");
144 if (button
== Qt::Key_Enter
) {
145 int id
= myLabel
->getId();
146 splashFileName
->clear();
147 splashFileName
->append(imageList
.at(id
));
150 myLabel
->setStyleSheet("border:1px solid; border-color:#00ffff");
153 void SplashLibraryDialog::on_nextPage_clicked() {
155 if (page
>= (imageList
.size() / 20)) {
156 ui
->nextPage
->setDisabled(true);
158 ui
->prevPage
->setEnabled(true);
162 void SplashLibraryDialog::on_prevPage_clicked() {
165 ui
->prevPage
->setDisabled(true);
167 if (imageList
.size() > 20) {
168 ui
->nextPage
->setEnabled(true);