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
@@ -168,128 +168,131 @@ void TabManager::newFolder(){
* 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() &&