X-Git-Url: http://git.maemo.org/git/?p=bootcreen;a=blobdiff_plain;f=bootscreen.cpp;h=0f9fd9768efd2cc2192bf2a37f1db4007000aab6;hp=fca329f30fa33c50f923b21ad0a5aaf674a203fb;hb=f49b723571d74d0d17a961d691e128dcb487dc6f;hpb=6c182b1dbbdea9fed77741cd94567c8c4c58bdc9
diff --git a/bootscreen.cpp b/bootscreen.cpp
index fca329f..0f9fd97 100644
--- a/bootscreen.cpp
+++ b/bootscreen.cpp
@@ -7,6 +7,7 @@ BootScreen::BootScreen(QWidget *parent)
{
hildonWelcome = "/etc/hildon-welcome.d/";
videosDir = "/opt/bootscreen/media/";
+ settingsDir = "/opt/bootscreen/data/";
checkSettings();
filterGroup = new QActionGroup(this);
@@ -36,23 +37,15 @@ BootScreen::BootScreen(QWidget *parent)
void BootScreen::checkSettings()
{
- QDir dir("/home/user");
- if (!dir.cd(".bootscreen")) {
- qWarning("Cannot find the \".bootscreen/\" directory");
- dir.mkdir(".bootscreen");
- if (!dir.cd(".bootscreen")) {
- qWarning("Cannot create the \".bootscreen/\" directory");
-
- //terminar applicacao
- }
- }
- settingsFile.setFileName(dir.filePath("settings.ini"));
- if (!settingsFile.exists())
+ QDir dir(settingsDir);
+ settingsFile.setFileName(dir.filePath("bootscreen.conf"));
+
+ if (!settingsFile.exists())
restoreSettings();
- else{
+ else{
QSettings tempSettings(settingsFile.fileName(),QSettings::IniFormat);
random = tempSettings.value("random").toBool();
- }
+ }
}
void BootScreen::createList()
@@ -135,6 +128,8 @@ void BootScreen::createList()
QHBoxLayout *layButtons = new QHBoxLayout();
up = new QPushButton("Up");
down = new QPushButton("Down");
+ save = new QPushButton("Save");
+ save->setEnabled(false);
if(random){
up->setEnabled(false);
@@ -143,10 +138,14 @@ void BootScreen::createList()
layButtons->addWidget(up);
layButtons->addWidget(down);
+ layButtons->addSpacing(50);
+ layButtons->addWidget(save);
lay->addLayout(layButtons);
connect(up, SIGNAL(clicked()), this, SLOT(moveUp()));
connect(down, SIGNAL(clicked()), this, SLOT(moveDown()));
+ connect(save, SIGNAL(clicked()), this, SLOT(saveConfs()));
+ connect(list, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(setPendingChanges(QListWidgetItem*)));
setCentralWidget(central);
}
@@ -160,7 +159,10 @@ void BootScreen::addVideo()
if(filePath != ""){
QFile fileCopy(filePath);
QFileInfo fileInfo(filePath);
- QString newFilePath = videosDir + fileInfo.fileName();
+ QString fileName = fileInfo.fileName();
+ //boot player can't read files with spaces in the name
+ fileName.replace(QString(" "), QString("_"));
+ QString newFilePath = videosDir + fileName;
qDebug() << newFilePath << endl;
qDebug() << fileInfo.size() << endl;
if(fileInfo.size() > 11100000)
@@ -174,16 +176,20 @@ void BootScreen::addVideo()
QMaemo5InformationBox::DefaultTimeout);
else{
bool result = fileCopy.copy(newFilePath);
- // tamanho
- if(result)
- list->addItem(QString("%1").arg(fileInfo.fileName()));
+ if(result){
+ list->addItem(QString("%1").arg(fileName));
+ save->setEnabled(true);
+ //autoselect item, if not in random mode
+ if(!random){
+ QListWidgetItem *currentItem = list->item(list->count()-1);
+ currentItem->setSelected(true);
+ }
+ }
else
QMaemo5InformationBox::information(this, "Error copying file",
QMaemo5InformationBox::DefaultTimeout);
}
}
-
- //add somewhere
}
}
@@ -194,7 +200,6 @@ void BootScreen::removeVideos()
QList selectedItems = list->selectedItems();
if(selectedItems.size()>0){
QDir vidDir(videosDir);
- QMessageBox msgBox;
int ret = QMessageBox::information(this, tr("Remove files"), tr("Remove selected file(s) ?"), QMessageBox::Yes | QMessageBox::No);
if(ret == QMessageBox::Yes){
@@ -209,6 +214,7 @@ void BootScreen::removeVideos()
delete temp;
}
}
+ save->setEnabled(true);
}
}
@@ -221,6 +227,7 @@ void BootScreen::moveUp()
QListWidgetItem * currentItem = list->takeItem(currentRow);
list->insertItem(currentRow - 1, currentItem);
list->setCurrentRow(currentRow - 1);
+ save->setEnabled(true);
}
void BootScreen::moveDown()
@@ -230,6 +237,7 @@ void BootScreen::moveDown()
QListWidgetItem * currentItem = list->takeItem(currentRow);
list->insertItem(currentRow + 1, currentItem);
list->setCurrentRow(currentRow + 1);
+ save->setEnabled(true);
}
void BootScreen::disableSelection(bool state)
@@ -259,6 +267,7 @@ void BootScreen::disableSelection(bool state)
}
random = true;
+ save->setEnabled(true);
}
void BootScreen::selectMultiple(bool state)
@@ -281,8 +290,11 @@ void BootScreen::restoreSettings()
{
qDebug() << settingsFile.fileName() << endl;
- if (!settingsFile.open(QIODevice::ReadWrite | QIODevice::Text))
+ if (!settingsFile.open(QIODevice::ReadWrite | QIODevice::Text)){
qWarning("Cannot create the settings file"); //abord
+ QMaemo5InformationBox::information(this, "Error: Cannot create the settings file",
+ QMaemo5InformationBox::DefaultTimeout);
+ }
QTextStream out(&settingsFile);
out << "random=false" << endl;
@@ -290,7 +302,7 @@ void BootScreen::restoreSettings()
random = false;
}
-void BootScreen::writeFiles(){
+void BootScreen::saveConfs(){
//remove old files
QDir dir(hildonWelcome);
@@ -312,6 +324,7 @@ void BootScreen::writeFiles(){
else
createFile(temp->text(), i);
}
+ save->setEnabled(false);
}
void BootScreen::createFile(QString filename, int index)
@@ -320,9 +333,11 @@ void BootScreen::createFile(QString filename, int index)
if(mediaFiles.contains(filename)){
QFile confFile(hildonWelcome + ind + ".conf");
qDebug() << confFile.fileName() << endl;
- if (!confFile.open(QIODevice::ReadWrite | QIODevice::Text))
+ if (!confFile.open(QIODevice::ReadWrite | QIODevice::Text)){
qWarning("Cannot create the settings file"); //abord
-
+ QMaemo5InformationBox::information(this, "Error: Cannot create the configurations file",
+ QMaemo5InformationBox::DefaultTimeout);
+ }
else{
QString filePath = mediaFiles.value(filename);
QTextStream out(&confFile);
@@ -330,15 +345,42 @@ void BootScreen::createFile(QString filename, int index)
out << "filename=" << filePath << endl;
}
}
- else
- qDebug() << "print a error" << endl;
+ else{
+ qDebug() << filename << endl;
+ qDebug() << "File already exists" << endl;
+ }
+}
+
+void BootScreen::setPendingChanges(QListWidgetItem *item)
+{
+ if(!random)
+ save->setEnabled(true);
}
void BootScreen::closeEvent(QCloseEvent *event)
{
- writeSettings();
- writeFiles();
- event->accept();
+ if(save->isEnabled()){
+ int ret = QMessageBox::information(this, tr("There are pending changes"), tr("Do you want to save your changes?"),
+ QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
+
+ if(ret == QMessageBox::Save){
+ saveConfs();
+ writeSettings();
+ event->accept();
+
+ }
+ else if(ret == QMessageBox::Discard){
+ writeSettings();
+ event->accept();
+ }
+ else{
+ event->ignore();
+ }
+ }
+ else{
+ writeSettings();
+ event->accept();
+ }
}
BootScreen::~BootScreen()