void KoStore::popDirectory() { Q_D(KoStore); d->currentPath.clear(); enterAbsoluteDirectory(QString()); enterDirectory(d->directoryStack.pop()); }
static int list_non_recurs_directory(direntry_t *entry, MainParam_t *mp) { int r; /* list top-level directory * If this was matched by wildcard in the basename, list it as * file, otherwise, list it as directory */ if (mp->basenameHasWildcard) { /* wildcard, list it as file */ return list_file(entry, mp); } else { /* no wildcard, list it as directory */ MainParam_t subMp; r=enterDirectory(mp->File); if(r) return ERROR_ONE; subMp = *mp; subMp.dirCallback = subMp.callback; return mp->loop(mp->File, &subMp, "*") | GOT_ONE; } }
bool KoDirectoryStore::openReadOrWrite(const QString& name, QIODevice::OpenModeFlag iomode) { Q_D(KoStore); //debugStore <<"KoDirectoryStore::openReadOrWrite m_currentPath=" << m_currentPath <<" name=" << name; int pos = name.lastIndexOf('/'); if (pos != -1) { // there are subdirs in the name -> maybe need to create them, when writing pushDirectory(); // remember where we were enterAbsoluteDirectory(QString()); //debugStore <<"KoDirectoryStore::openReadOrWrite entering" << name.left(pos); bool ret = enterDirectory(name.left(pos)); popDirectory(); if (!ret) return false; } d->stream = new QFile(m_basePath + name); if (!d->stream->open(iomode)) { delete d->stream; d->stream = 0; return false; } if (iomode == QIODevice::ReadOnly) d->size = d->stream->size(); return true; }
static int list_file(direntry_t *entry, MainParam_t *mp) { unsigned long size; int i; int Case; int r; wchar_t ext[4]; wchar_t name[9]; doscp_t *cp; if(!all && (entry->dir.attr & 0x6)) return 0; if(concise && isSpecialW(entry->name)) return 0; r=enterDirectory(entry->Dir); if (r) return ERROR_ONE; if (wide) { if(filesInDir % 5) putchar(' '); else putchar('\n'); } if(IS_DIR(entry)){ size = 0; } else size = FILE_SIZE(&entry->dir); Case = entry->dir.Case; if(!(Case & (BASECASE | EXTCASE)) && mtools_ignore_short_case) Case |= BASECASE | EXTCASE; cp = GET_DOSCONVERT(entry->Dir); dos_to_wchar(cp, entry->dir.ext, ext, 3); if(Case & EXTCASE){ for(i=0; i<3;i++) ext[i] = towlower(ext[i]); } ext[3] = '\0'; dos_to_wchar(cp, entry->dir.name, name, 8); if(Case & BASECASE){ for(i=0; i<8;i++) name[i] = towlower(name[i]); } name[8]='\0'; if(wide){ if(IS_DIR(entry)) printf("[%s]%*s", global_shortname, (int) (15 - 2 - strlen(global_shortname)), ""); else printf("%-15s", global_shortname); } else if(!concise) { char tmpBasename[4*8+1]; char tmpExt[4*8+1]; wchar_to_native(name,tmpBasename,8); wchar_to_native(ext,tmpExt,3); if (name[0] == ' ') printf(" "); else if(mtools_dotted_dir) printf("%-12s ", global_shortname); else printf("%s %s ", tmpBasename, tmpExt); /* is a subdirectory */ if(IS_DIR(entry)) printf("<DIR> "); else printf(" %8ld", (long) size); printf(" "); print_date(&entry->dir); printf(" "); print_time(&entry->dir); if(debug) printf(" %s %d ", tmpBasename, START(&entry->dir)); if(*global_longname) printf(" %s", global_longname); printf("\n"); } else { char tmp[4*MAX_VNAMELEN+1]; wchar_to_native(entry->name,tmp,MAX_VNAMELEN); printf("%s/%s", dirPath, tmp); if(IS_DIR(entry)) putchar('/'); putchar('\n'); } filesOnDrive++; filesInDir++; bytesOnDrive += (mt_size_t) size; bytesInDir += (mt_size_t) size; return GOT_ONE; }
void readKeyboard(void) { struct dir_node *currentNode; unsigned char key; bool decision = false; key = toupper(cgetc()); switch((int)key) { case HK_FORMATTER: if(loadOverlay(7)) { formatDisk(selectedPanel); clrscr(); writeMenuBar(); reloadPanels(); } break; case HK_BASIC_VIEWER: if(loadOverlay(6)) { viewFileAsBASIC(selectedPanel); clrscr(); writeMenuBar(); reloadPanels(); } break; case HK_HEX_EDIT: if(loadOverlay(5)) { hexEditCurrentFile(selectedPanel); clrscr(); writeMenuBar(); reloadPanels(); } break; case CH_ENTER: currentNode = getSelectedNode(selectedPanel); if(isDirectory(selectedPanel)) { enterDirectory(selectedPanel); } else if(currentNode != NULL) { sprintf(filePath, "%s/%s", selectedPanel->path, currentNode->name); if(currentNode->type == 0x06 || currentNode->type == 0xFF) { saveScreen(); decision = writeYesNo("Confirm", quit_message, 1); retrieveScreen(); if(decision == true) { exec(filePath, NULL); } } else if(currentNode->type == 0xFC) { if(loadOverlay(6)) { viewFileAsBASIC(selectedPanel); clrscr(); writeMenuBar(); reloadPanels(); } } else { if(loadOverlay(1)) viewFile(filePath); } } break; case KEY_F4: rereadSelectedPanel(); break; case KEY_F3: selectDrive(selectedPanel); rereadSelectedPanel(); break; case HK_SELECT: selectCurrentFile(); break; #ifdef __APPLE2ENH__ case CH_CURS_UP: #else case CH_CURS_LEFT: #endif moveSelectorUp(selectedPanel); break; #ifdef __APPLE2ENH__ case CH_CURS_DOWN: #else case CH_CURS_RIGHT: #endif moveSelectorDown(selectedPanel); break; #ifdef __APPLE2ENH__ case CH_CURS_LEFT: if(selectedPanel == &rightPanelDrive && strlen(leftPanelDrive.path) > 0) { selectedPanel = &leftPanelDrive; writeSelectorPosition(&leftPanelDrive, '>'); writeSelectorPosition(&rightPanelDrive, ' '); writeCurrentFilename(selectedPanel); } break; case CH_CURS_RIGHT: if(selectedPanel == &leftPanelDrive && strlen(rightPanelDrive.path) > 0) { selectedPanel = &rightPanelDrive; writeSelectorPosition(&leftPanelDrive, ' '); writeSelectorPosition(&rightPanelDrive, '>'); writeCurrentFilename(selectedPanel); } break; #endif case HK_SWITCH_PANEL: if(selectedPanel == &leftPanelDrive && strlen(rightPanelDrive.path) > 0) { selectedPanel = &rightPanelDrive; writeSelectorPosition(&leftPanelDrive, ' '); writeSelectorPosition(&rightPanelDrive, '>'); writeCurrentFilename(selectedPanel); } else if(selectedPanel == &rightPanelDrive && strlen(leftPanelDrive.path) > 0) { selectedPanel = &leftPanelDrive; writeSelectorPosition(&leftPanelDrive, '>'); writeSelectorPosition(&rightPanelDrive, ' '); writeCurrentFilename(selectedPanel); } break; case KEY_SH_PLUS: enterDirectory(selectedPanel); break; case KEY_SH_MINUS: case CH_ESC: leaveDirectory(selectedPanel); break; //case 188: // C= C - Command Menu // writeMenu(command); // break; //case 182: // C= L - Left Menu // writeMenu(left); // break; //case 178: // C= R - Right Menu // writeMenu(right); // break; //case 187: // C= F - File Menu // writeMenu(file); // break; //case 185: // C= O - Options Menu // writeMenu(options); // break; case HK_REREAD_LEFT: rereadDrivePanel(left); break; case HK_REREAD_RIGHT: rereadDrivePanel(right); break; case HK_DRIVE_LEFT: writeDriveSelectionPanel(left); break; case HK_DRIVE_RIGHT: writeDriveSelectionPanel(right); break; case HK_SELECT_ALL: selectAllFiles(selectedPanel, true); break; case HK_DESELECT_ALL: selectAllFiles(selectedPanel, false); break; case KEY_F1: if(loadOverlay(1)) writeHelpPanel(); break; case KEY_F2: quit(); break; case KEY_F5: if(loadOverlay(4)) copyFiles(); break; case HK_RENAME: case KEY_F6: if(loadOverlay(4)) renameFile(); break; case HK_DELETE: case KEY_F8: if(loadOverlay(4)) deleteFiles(); break; //case KEY_AT: // inputCommand(); // break; case KEY_F7: if(loadOverlay(4)) makeDirectory(); break; case HK_TO_TOP: moveTop(selectedPanel); break; case HK_TO_BOTTOM: moveBottom(selectedPanel); break; case HK_PAGE_UP: movePageUp(selectedPanel); break; case HK_PAGE_DOWN: movePageDown(selectedPanel); break; case HK_WRITE_DISK_IMAGE: if(loadOverlay(3)) writeDiskImage(); break; case HK_CREATE_DISK_IMAGE: if(loadOverlay(3)) createDiskImage(); break; case HK_COPY_DISK: if(loadOverlay(2)) copyDisk(); break; default: //writeStatusBarf("%c", key); break; } }
void KoStore::popDirectory() { m_currentPath.clear(); enterAbsoluteDirectory( QString::null ); enterDirectory( m_directoryStack.pop() ); }
static int list_file(direntry_t *entry, MainParam_t *mp) { unsigned long size; int i; int Case; int r; if(!all && (entry->dir.attr & 0x6)) return 0; if(concise && isSpecial(entry->name)) return 0; r=enterDirectory(entry->Dir); if (r) return ERROR_ONE; if (wide) { if(filesInDir % 5) putchar(' '); else putchar('\n'); } if(IS_DIR(entry)){ size = 0; } else size = FILE_SIZE(&entry->dir); Case = entry->dir.Case; if(!(Case & (BASECASE | EXTCASE)) && mtools_ignore_short_case) Case |= BASECASE | EXTCASE; if(Case & EXTCASE){ for(i=0; i<3;i++) entry->dir.ext[i] = tolower(entry->dir.ext[i]); } to_unix(entry->dir.ext,3); if(Case & BASECASE){ for(i=0; i<8;i++) entry->dir.name[i] = tolower(entry->dir.name[i]); } to_unix(entry->dir.name,8); if(wide){ if(IS_DIR(entry)) printf("[%s]%*s", shortname, (int) (15 - 2 - strlen(shortname)), ""); else printf("%-15s", shortname); } else if(!concise) { /* is a subdirectory */ if(mtools_dotted_dir) printf("%-13s", shortname); else printf("%-8.8s %-3.3s ", entry->dir.name, entry->dir.ext); if(IS_DIR(entry)) printf("<DIR> "); else printf(" %8ld", (long) size); printf(" "); print_date(&entry->dir); printf(" "); print_time(&entry->dir); if(debug) printf(" %s %d ", entry->dir.name, START(&entry->dir)); if(*longname) printf(" %s", longname); printf("\n"); } else { printf("%s/%s", dirPath, entry->name); if(IS_DIR(entry)) putchar('/'); putchar('\n'); } filesOnDrive++; filesInDir++; bytesOnDrive += (mt_size_t) size; bytesInDir += (mt_size_t) size; return GOT_ONE; }