summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-05-06 20:48:13 (UTC)
committer llornkcor <llornkcor>2002-05-06 20:48:13 (UTC)
commit24259e7b1446f671861b86ee1abb5d8021b98387 (patch) (side-by-side diff)
tree2bbc06dbc590ba5cc5f5dd0e56025b07c9fa729b
parentd1dd3ae2eb11a9c6e83eaad817a6f84a53d68691 (diff)
downloadopie-24259e7b1446f671861b86ee1abb5d8021b98387.zip
opie-24259e7b1446f671861b86ee1abb5d8021b98387.tar.gz
opie-24259e7b1446f671861b86ee1abb5d8021b98387.tar.bz2
fix for rmdir crash
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/tabmanager/tabmanager.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/noncore/settings/tabmanager/tabmanager.cpp b/noncore/settings/tabmanager/tabmanager.cpp
index af76251..f54c837 100644
--- a/noncore/settings/tabmanager/tabmanager.cpp
+++ b/noncore/settings/tabmanager/tabmanager.cpp
@@ -136,192 +136,195 @@ void TabManager::rescanFolder(QString directory, QListViewItem* parent){
AppLnk app(directory + "/" + fi->fileName());
newItem->setPixmap(0,app.pixmap());
newItem->setText(0, app.name());
itemList.insert(newItem, directory + "/" + fi->fileName());
}
}
}
}
++it; // goto next list element
}
}
/**
* Create a new blank Tab.
* Create a physical folder with .directory file
* Create a item on the list
*/
void TabManager::newFolder(){
QDir r;
r.mkdir(QString(HOME_APP_DIR) + "/" + NEW_FOLDER);
system((QString("echo [Desktop Entry] | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1());
system((QString("echo Name=" NEW_FOLDER " | cat >> ") + HOME_APP_DIR + "/" + NEW_FOLDER "/.directory").latin1());
QString homeLocation = QString(HOME_APP_DIR) + "/" + NEW_FOLDER + "/.directory";
QListViewItem *newItem = new QListViewItem(tabList, NEW_FOLDER);
itemList.insert(newItem, homeLocation );
// We have changed something.
changed = true;
}
/**
* Create a new blank application
* Make sure a tab is selected
* create physical file
* fill file with default information (entry, name, type).
*/
void TabManager::newApplication(){
QListViewItem *item = tabList->currentItem();
if(!item || item->parent())
return;
QString parentDir = itemList[item].mid(0,itemList[item].length()-11);
QString homeLocation = parentDir + "/" NEW_APPLICATION APPLICATION_EXTENSION;
system((QString("echo [Desktop Entry] | cat >> ") + homeLocation).latin1());
system((QString("echo Name=" NEW_APPLICATION " | cat >> ") + homeLocation).latin1());
int slash = parentDir.findRev('/', -1);
QString folderName = parentDir.mid(slash+1, parentDir.length());
system((QString("echo Type=") + folderName + " | cat >> " + homeLocation).latin1());
// Insert into the tree
QListViewItem *newItem = new QListViewItem(item, NEW_APPLICATION);
itemList.insert(newItem, homeLocation );
// We have changed something.
changed = true;
}
/**
* Remove the item.
* Check if we can
* Prompt user
* Delete physical file (Dir, remove .dir, then dir. File, remove file)
* Remove from installer if need too.
*/
void TabManager::removeItem(){
// Make sure we can delete
QListViewItem *item = tabList->currentItem();
if(!item)
return;
if(item->childCount() > 0){
QMessageBox::critical(this, tr("Message"), tr("Can't remove with applications\nstill in the group."),
tr("Ok") );
return;
}
// Prompt.
int answer = QMessageBox::warning(this, tr("Message"), tr("Are you sure you want to delete?"),
tr("Yes"), tr("Cancel"), 0, 1 );
if (answer)
return;
bool removeSuccessfull = true;
QString location = itemList[item];
// Remove file (.directory in a Directory case)
if(!QFile::remove(location))
removeSuccessfull = false;
// Remove directory
if(item->parent() == NULL){
// Remove .directory file string
location = location.mid(0,location.length()-10);
QDir dir;
if(!dir.rmdir(location))
removeSuccessfull = false;
+ else
+ removeSuccessfull = true;
+
}
// If removing failed.
if(!removeSuccessfull){
qDebug((QString("removeItem: ") + location).latin1());
QMessageBox::critical(this, tr("Message"), tr("Can't remove."),
tr("Ok") );
return;
}
// Remove from the installer so it wont fail.
// Don't need to do this sense the current install uses rm -f so no error
// Remove from the gui list.
itemList.remove(item);
if(item->parent())
item->parent()->takeItem(item);
delete item;
// We have changed something.
changed = true;
}
/**
* Helper function. Edits the current item.
* calls editItem with the currently selected item.
*/
void TabManager::editCurrentItem(){
editItem(tabList->currentItem());
}
/**
* Edit the item that is passed in.
* Show application dialog and if anything changed
* @param item the item to edit.
*/
void TabManager::editItem( QListViewItem * item){
if(!item)
return;
TabAppLnk app(itemList[item]);
if(!app.isValid()){
qDebug(QString("editItem: Not a valid applnk file: ") + itemList[item].latin1());
return;
}
AppEdit application(this, tr("Application edit"), true);
application.nameLineEdit->setText(app.name());
application.iconLineEdit->setText(app.pixmapString());
application.execLineEdit->setText(app.exec());
application.commentLineEdit->setText(app.comment());
if(item->parent() == NULL){
application.execLineEdit->setEnabled(false);
application.TextLabel3->setEnabled(false);
application.setCaption(tr("Tab"));
}
// Only do somthing if they hit OK
if(application.exec() == 0)
return;
// If nothing has changed exit (hmmm why did they hit ok?)
if(app.name() == application.nameLineEdit->text() &&
app.pixmapString() == application.iconLineEdit->text() &&
app.comment() == application.commentLineEdit->text() &&
app.exec() == application.execLineEdit->text())
return;
// Change the applnk file
QString oldName = app.name();
app.setName(application.nameLineEdit->text());
app.setIcon(application.iconLineEdit->text());
app.setComment(application.commentLineEdit->text());
app.setExec(application.execLineEdit->text());
if(!app.writeLink()){
QMessageBox::critical(this, tr("Message"), tr("Can't save."),
tr("Ok") );
return;
}
// Update the gui icon and name
item->setText(0,app.name());
item->setPixmap(0,app.pixmap());
// We have changed something.
changed = true;
// If we were dealing with a new folder or new application change
// the file names. Also change the item location in itemList
if(oldName == NEW_FOLDER){
QDir r;
QString oldName = itemList[item];
oldName = oldName.mid(0,oldName.length()-11);
QString newName = oldName.mid(0,oldName.length()-9);
newName = newName + "/" + app.name();