+ split_path_and_filename(p, &path, &pnl, &file, &fnl);
+ item.clear();
+ item << marked << file << modes << user << group << size << date;
+ QTreeWidgetItem *ti = new QTreeWidgetItem((QTreeWidget *)0, item);
+ ti->setTextAlignment(5, Qt::AlignRight); /* right align size */
+ items.append(ti);
+ }
+ fileWidget->clear();
+ fileWidget->insertTopLevelItems(0, items);
+
+ free_pool_memory(file);
+ free_pool_memory(path);
+}
+
+void restoreDialog::accept()
+{
+ this->hide();
+ m_console->write("done");
+ delete this;
+ m_console->setEnabled(true);
+ mainWin->resetFocus();
+}
+
+
+void restoreDialog::reject()
+{
+ this->hide();
+ m_console->write("quit");
+ mainWin->set_status("Canceled");
+ delete this;
+ m_console->setEnabled(true);
+ mainWin->resetFocus();
+}
+
+void restoreDialog::fileDoubleClicked(QTreeWidgetItem *item, int column)
+{
+ char cmd[1000];
+ if (column == 0) { /* mark/unmark */
+ if (item->text(0) == "*") {
+ bsnprintf(cmd, sizeof(cmd), "unmark \"%s\"", item->text(1).toUtf8().data());
+ item->setText(0, " ");
+ } else {
+ bsnprintf(cmd, sizeof(cmd), "mark \"%s\"", item->text(1).toUtf8().data());
+ item->setText(0, "*");
+ }
+ m_console->write_dir(cmd);
+ if (m_console->read() > 0) {
+ strip_trailing_junk(m_console->msg());
+ statusLine->setText(m_console->msg());
+ }
+ m_console->displayToPrompt();
+ return;
+ }
+ /*
+ * Double clicking other than column 0 means to decend into
+ * the directory -- or nothing if it is not a directory.
+ */
+ if (item->text(1).endsWith("/")) {
+ cwd(item->text(1).toUtf8().data());
+ fillDirectory();
+ }
+}