void BookmarksToolBar::contextMenuRequested(const QPoint &position) { QAction *action = actionAt(position); QMenu menu; if (action) { QVariant variant = action->data(); Q_ASSERT(variant.canConvert<QModelIndex>()); QAction *menuAction = 0; if (!action->menu()) { menuAction = menu.addAction(tr("Open"), this, SLOT(openBookmarkInCurrentTab())); menuAction->setData(variant); menuAction = menu.addAction(tr("Open in New &Tab"), this, SLOT(openBookmarkInNewTab())); menuAction->setData(variant); menu.addSeparator(); } menuAction = menu.addAction(tr("Remove"), this, SLOT(removeBookmark())); menuAction->setData(variant); menu.addSeparator(); } menu.addAction(tr("Add Bookmark..."), this, SLOT(newBookmark())); menu.addAction(tr("Add Folder..."), this, SLOT(newFolder())); menu.exec(QCursor::pos()); }
bool BookmarkXXPort::exportContacts( const KABC::AddresseeList &list, const QString& ) { QString fileName = locateLocal( "data", "kabc/bookmarks.xml" ); KBookmarkManager *mgr = KBookmarkManager::managerForFile( fileName ); KBookmarkDomBuilder *builder = new KBookmarkDomBuilder( mgr->root(), mgr ); builder->connectImporter( this ); KABC::AddresseeList::ConstIterator it; emit newFolder( i18n( "AddressBook" ), false, "" ); for ( it = list.begin(); it != list.end(); ++it ) { if ( !(*it).url().isEmpty() ) { QString name = (*it).givenName() + " " + (*it).familyName(); emit newBookmark( name, (*it).url().url().latin1(), QString( "" ) ); } } emit endFolder(); delete builder; mgr->save(); KBookmarkMenu::DynMenuInfo menu; menu.name = i18n( "Addressbook Bookmarks" ); menu.location = fileName; menu.type = "xbel"; menu.show = true; KBookmarkMenu::setDynamicBookmarks( "kabc", menu ); return true; }
void RSSImp::askNewFolder() { QTreeWidgetItem* parent_item = 0; Rss::FolderPtr rss_parent; if (m_feedList->selectedItems().size() > 0) { parent_item = m_feedList->selectedItems().at(0); rss_parent = qSharedPointerDynamicCast<Rss::Folder>(m_feedList->getRSSItem(parent_item)); Q_ASSERT(rss_parent); } else { rss_parent = m_rssManager->rootFolder(); } bool ok; QString new_name = AutoExpandableDialog::getText(this, tr("Please choose a folder name"), tr("Folder name:"), QLineEdit::Normal, tr("New folder"), &ok); if (!ok || rss_parent->hasChild(new_name)) return; Rss::FolderPtr newFolder(new Rss::Folder(new_name)); rss_parent->addFile(newFolder); QTreeWidgetItem* folderItem = createFolderListItem(newFolder); if (parent_item) parent_item->addChild(folderItem); else m_feedList->addTopLevelItem(folderItem); // Notify TreeWidget m_feedList->itemAdded(folderItem, newFolder); // Expand parent folder to display new folder if (parent_item) parent_item->setExpanded(true); m_rssManager->saveStreamList(); }
void cmd_mkdir(Volume* volume, int argc, const char *argv[]) { if(argc > 1) { newFolder(argv[1], volume); } else { printf("Not enough arguments"); } }
void MessageFolder::openMailbox() { if (QMailStore* store = QMailStore::instance()) { if (!mFolder.id().isValid()) { QMailFolderKey key(QMailFolderKey::Name,mailbox()); key &= QMailFolderKey(QMailFolderKey::ParentId,QMailFolderId()); QMailFolderIdList folderIdList = QMailStore::instance()->queryFolders(key); if(folderIdList.isEmpty()) { // create folder QMailFolder newFolder(mailbox()); if(!QMailStore::instance()->addFolder(&newFolder)) qWarning() << "Failed to add folder " << mailbox(); mFolder = newFolder; } else { // load folder QMailFolderId folderId = folderIdList.first(); mFolder = QMailFolder(folderId); } //set the folder key mParentFolderKey = QMailMessageKey(QMailMessageKey::ParentFolderId,mFolder.id()); } // notify when our content is reported to have changed connect(store, SIGNAL(folderContentsModified(QMailFolderIdList)), this, SLOT(folderContentsModified(QMailFolderIdList))); } }
Folder::Ptr Folder::addFolder(const std::string &folderName) { Folder::Ptr newFolder(new Folder); newFolder->m_Name = folderName; newFolder->m_Parent = this; m_SubFolders.push_back(newFolder); return newFolder; }
void PageLayout::AddView(const std::string& viewId, int relationship, float ratio, const std::string& refId, bool /*minimized*/, bool standalone, bool showTitle) { if (this->CheckPartInLayout(viewId)) { return; } try { // Create the part. StackablePart::Pointer newPart = this->CreateView(viewId); if (newPart == 0) { this->AddPlaceholder(viewId, relationship, ratio, refId); //TODO ViewActivator for IIdentifier //LayoutHelper::AddViewActivator(this, viewId); } else { int appearance = PresentationFactoryUtil::ROLE_VIEW; if (standalone) { if (showTitle) { appearance = PresentationFactoryUtil::ROLE_STANDALONE; } else { appearance = PresentationFactoryUtil::ROLE_STANDALONE_NOTITLE; } } // PartStack for views PartStack::Pointer newFolder(new PartStack(rootLayoutContainer->page, true, appearance, 0)); newFolder->Add(newPart); this->SetFolderPart(viewId, newFolder); this->AddStack(newFolder, viewId, relationship, ratio, refId); // force creation of the view layout rec this->GetViewLayoutRec(viewId, true); // Capture any minimized stacks // if (minimized) // { // // Remember the minimized stacks so we can // // move them to the trim when the Perspective // // activates... // minimizedStacks.add(newFolder); // } } } catch (PartInitException& e) { WorkbenchPlugin::Log(this->GetClassName(), "AddView()", e); //$NON-NLS-1$ } }
DirectoryPickerDialog::DirectoryPickerDialog(PCloudApp *a, QWidget *parent) : QDialog(parent), ui(new Ui::DirectoryPickerDialog) { onlyMine=false; showRoot=false; app=a; ui->setupUi(this); connect(ui->newfolder, SIGNAL(clicked()), this, SLOT(newFolder())); }
void TexturesSubFolder::mousePressEvent(QMouseEvent *e) { if(e->button() == Qt::RightButton) { auto action = contextMenu_->show(e->globalPos()); if(!action) return; if(action->text().toStdString().compare("New Folder") == 0) newFolder(); if(action->text().toStdString().compare("Import Texture") == 0) importTexture(); if(action->text().toStdString().compare("Rename") == 0) rename(); if(action->text().toStdString().compare("Delete") == 0) remove(); } }
void CFlowGraphModuleManager::ScanFolder(const string& folderName, bool bGlobal) { _finddata_t fd; intptr_t handle = 0; ICryPak *pPak = gEnv->pCryPak; CryFixedStringT<512> searchString = folderName.c_str(); searchString.append("*.*"); handle = pPak->FindFirst(searchString.c_str(), &fd); CryFixedStringT<512> moduleName(""); string newFolder(""); if (handle > -1) { do { if (!strcmp(fd.name, ".") || !strcmp(fd.name, "..") || (fd.attrib & _A_HIDDEN)) continue; if (fd.attrib & _A_SUBDIR) { newFolder = folderName; newFolder = newFolder + fd.name; newFolder = newFolder + "\\"; ScanFolder(newFolder, bGlobal); } else { moduleName = fd.name; if(!strcmpi(PathUtil::GetExt(moduleName.c_str()), "xml")) { PathUtil::RemoveExtension(moduleName); PathUtil::MakeGamePath(folderName); // initial load: creates module, registers nodes CFlowGraphModule* pModule = PreLoadModuleFile(moduleName.c_str(), PathUtil::GetPath(folderName)+fd.name, bGlobal); // important: the module should be added using its internal name rather than the filename m_ModulesPathInfo.insert(TModulesPathInfo::value_type(pModule->GetName(), PathUtil::GetPath(folderName)+fd.name)); } } } while (pPak->FindNext(handle, &fd) >= 0); pPak->FindClose(handle); } }
void BookmarksToolBar::contextMenuRequested(const QPoint &position) { QToolButton *button = qobject_cast<QToolButton *>(childAt(position)); QMenu menu; QAction *action; if (button) { QModelIndex index; QVariant variant; BookmarkToolButton *bookmarkButton = qobject_cast<BookmarkToolButton *>(button); ModelMenu *modelMenu = qobject_cast<ModelMenu *>(button->menu()); if (modelMenu) { index = modelMenu->rootIndex(); variant.setValue(index); } else if (bookmarkButton) { index = bookmarkButton->index(); variant.setValue(index); action = menu.addAction(tr("Open"), this, SLOT(openBookmark())); action->setData(variant); action = menu.addAction(tr("Open in New &Tab"), this, SLOT(openBookmarkInNewTab())); action->setData(variant); menu.addSeparator(); } if (variant.isValid()) { action = menu.addAction(tr("Remove"), this, SLOT(removeBookmark())); action->setData(variant); } menu.addSeparator(); } action = menu.addAction(tr("Add Bookmark..."), this, SLOT(newBookmark())); action = menu.addAction(tr("Add Folder..."), this, SLOT(newFolder())); menu.exec(QCursor::pos()); }
void USBLinkTreeWidget::customContextMenuRequested(QPoint pos) { QMenu *menu = new QMenu(this); QAction *action_delete = new QAction(tr("Delete"), menu); context_menu_item = this->itemAt(pos); if(context_menu_item == nullptr || context_menu_item->data(0, Qt::UserRole).toBool() == true) { // Is a directory QWidgetAction *action_new_folder = new QWidgetAction(menu); QLineEdit *line_new_folder = new QLineEdit(nullptr); line_new_folder->setPlaceholderText(tr("New folder")); action_new_folder->setDefaultWidget(line_new_folder); connect(line_new_folder, SIGNAL(returnPressed()), this, SLOT(newFolder())); // FIXME: Can this delete line_new_folder while in use by newFolder? connect(line_new_folder, SIGNAL(returnPressed()), menu, SLOT(close())); menu->addAction(action_new_folder); if(context_menu_item == nullptr || context_menu_item->childCount() > 0) { // Non-empty directory action_delete->setDisabled(true); } } else { // Is not a directory QAction *action_download = new QAction(tr("Download"), menu); connect(action_download, SIGNAL(triggered()), this, SLOT(downloadEntry())); menu->addAction(action_download); } connect(action_delete, SIGNAL(triggered()), this, SLOT(deleteEntry())); menu->addAction(action_delete); menu->popup(this->viewport()->mapToGlobal(pos)); }
void PageLayout::StackPart(StackablePart::Pointer newPart, const std::string& viewId, const std::string& refId) { this->SetRefPart(viewId, newPart); // force creation of the view layout rec this->GetViewLayoutRec(viewId, true); // If ref part is in a folder than just add the // new view to that folder. PartStack::Pointer folder = this->GetFolderPart(refId).Cast<PartStack>(); if (folder != 0) { folder->Add(newPart); this->SetFolderPart(viewId, folder); return; } // parts are now always contained in folders // // If the ref part is in the page layout then create // // a new folder and add the new view. // StackablePart::Pointer refPart = this->GetRefPart(refId); // if (refPart != 0) // && (refPart instanceof PartPane || refPart instanceof PartPlaceholder)) // { // PartStack::Pointer newFolder(new PartStack(rootLayoutContainer->page)); // rootLayoutContainer->Replace(refPart, newFolder); // newFolder->Add(refPart); // newFolder->Add(newPart); // this->SetFolderPart(refId, newFolder); // this->SetFolderPart(viewId, newFolder); // return; // } // If ref part is not found then just do add. WorkbenchPlugin::Log("Referenced part does not exist yet: " + refId); PartStack::Pointer newFolder(new PartStack(rootLayoutContainer->page)); newFolder->Add(newPart); this->SetFolderPart(viewId, newFolder); rootLayoutContainer->Add(newFolder); }
BookmarksDialog::BookmarksDialog(QWidget *parent, BookmarksManager *manager) : QDialog(parent) , m_bookmarksManager(0) , m_bookmarksModel(0) , m_proxyModel(0) { m_bookmarksManager = manager; if (!m_bookmarksManager) m_bookmarksManager = BrowserApplication::bookmarksManager(); setupUi(this); tree->setUniformRowHeights(true); tree->setSelectionBehavior(QAbstractItemView::SelectRows); tree->setSelectionMode(QAbstractItemView::ExtendedSelection); tree->setTextElideMode(Qt::ElideMiddle); m_bookmarksModel = m_bookmarksManager->bookmarksModel(); m_proxyModel = new TreeProxyModel(this); m_proxyModel->setFilterKeyColumn(-1); connect(search, SIGNAL(textChanged(QString)), m_proxyModel, SLOT(setFilterFixedString(QString))); connect(removeButton, SIGNAL(clicked()), tree, SLOT(removeSelected())); m_proxyModel->setSourceModel(m_bookmarksModel); tree->setModel(m_proxyModel); tree->setDragDropMode(QAbstractItemView::InternalMove); tree->setExpanded(m_proxyModel->index(0, 0), true); tree->setAlternatingRowColors(true); QFontMetrics fm(font()); int header = fm.width(QLatin1Char('m')) * 40; tree->header()->resizeSection(0, header); tree->header()->setStretchLastSection(true); connect(tree, SIGNAL(activated(const QModelIndex&)), this, SLOT(openBookmark())); tree->setContextMenuPolicy(Qt::CustomContextMenu); connect(tree, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(customContextMenuRequested(const QPoint &))); connect(addFolderButton, SIGNAL(clicked()), this, SLOT(newFolder())); expandNodes(m_bookmarksManager->bookmarks()); setAttribute(Qt::WA_DeleteOnClose); }
Folder* FileSystemScanner::addFolder(QDir* dir, bool recursive) throw(EngineException*) { // test if the given folder is addable testIfFolderIsAddable(dir, recursive); tracer->sdebug(__func__) << "adding folder: " << dir->absPath() << ", recursive: " << recursive << "..." << endl; reset(); m_engine->dirtyfy(); Folder* folder = new Folder(m_engine->m_nextSourceDirId++, dir, recursive); folder->setFound(true); m_engine->m_sourceDirs->append(folder); m_engine->m_sourceDirDict->insert(folder->id(), folder); // add all files in the folder rescanFolder(folder, false); emit(newFolder(folder)); if (m_cancel) { return folder; } // add all folders below the given folder if (recursive) { delete m_loopDetectionHelper; m_loopDetectionHelper = new QPtrList<QString>; m_loopDetectionHelper->setAutoDelete(true); m_loopDetectionHelper->append(new QString(folder->dir()->canonicalPath())); addFolders(folder); } return folder; }
PartList::PartList(QWidget *parent) : QWidget(parent), ui(new Ui::PartList) { ui->setupUi(this); // mAssetListWidget = findChild<AssetListWidget*>("assetList"); // connect(mAssetListWidget, SIGNAL(assetDoubleClicked(AssetRef)), this, SIGNAL(assetDoubleClicked(AssetRef))); mAssetTreeWidget = findChild<AssetTreeWidget*>("assetTree"); connect(mAssetTreeWidget, SIGNAL(assetDoubleClicked(AssetRef)), this, SIGNAL(assetDoubleClicked(AssetRef))); connect(findChild<QToolButton*>("toolButtonNewPart"), SIGNAL(clicked()), this, SLOT(newPart())); connect(findChild<QToolButton*>("toolButtonNewComp"), SIGNAL(clicked()), this, SLOT(newComp())); connect(findChild<QToolButton*>("toolButtonNewFolder"), SIGNAL(clicked()), this, SLOT(newFolder())); connect(findChild<QToolButton*>("toolButtonRenameAsset"), SIGNAL(clicked()), this, SLOT(renameAsset())); connect(findChild<QToolButton*>("toolButtonCopyAsset"), SIGNAL(clicked()), this, SLOT(copyAsset())); connect(findChild<QToolButton*>("toolButtonDeleteAsset"), SIGNAL(clicked()), this, SLOT(deleteAsset())); updateList(); }
FileBrowser::FileBrowser(LiteApi::IApplication *app, QObject *parent) : QObject(parent), m_liteApp(app) { m_widget = new QWidget; QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setMargin(0); mainLayout->setSpacing(0); m_fileModel = new QFileSystemModel(this); m_fileModel->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); m_proxyModel = new QSortFileSystemProxyModel(this); m_proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); m_proxyModel->setDynamicSortFilter(true); m_proxyModel->setSourceModel(m_fileModel); m_proxyModel->sort(0); //create filter toolbar m_filterToolBar = new QToolBar(m_widget); m_filterToolBar->setIconSize(QSize(16,16)); m_syncAct = new QAction(QIcon("icon:filebrowser/images/sync.png"),tr("Synchronize with editor"),this); m_syncAct->setCheckable(true); m_filterCombo = new QComboBox; m_filterCombo->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); m_filterCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); m_filterCombo->setEditable(true); m_filterCombo->addItem("*"); m_filterCombo->addItem("Makefile;*.go;*.cgo;*.s;*.goc;*.y;*.e64;*.pro"); m_filterCombo->addItem("*.sh;Makefile;*.go;*.cgo;*.s;*.goc;*.y;*.*.c;*.cpp;*.h;*.hpp;*.e64;*.pro"); m_filterToolBar->addAction(m_syncAct); m_filterToolBar->addSeparator(); m_filterToolBar->addWidget(m_filterCombo); //create root toolbar m_rootToolBar = new QToolBar(m_widget); m_rootToolBar->setIconSize(QSize(16,16)); m_cdupAct = new QAction(QIcon("icon:filebrowser/images/cdup.png"),tr("Open Parent"),this); m_rootCombo = new QComboBox; m_rootCombo->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); m_rootCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength); m_rootCombo->setEditable(false); m_rootCombo->addItem(m_fileModel->myComputer().toString()); m_rootToolBar->addAction(m_cdupAct); m_rootToolBar->addSeparator(); m_rootToolBar->addWidget(m_rootCombo); //create treeview m_treeView = new QTreeView; m_treeView->setContextMenuPolicy(Qt::CustomContextMenu); m_treeView->setModel(m_proxyModel); m_treeView->setRootIsDecorated(true); m_treeView->setUniformRowHeights(true); m_treeView->setTextElideMode(Qt::ElideNone); m_treeView->setAttribute(Qt::WA_MacShowFocusRect, false); m_treeView->setHeaderHidden(true); m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); // show horizontal scrollbar #if QT_VERSION >= 0x050000 m_treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); #else m_treeView->header()->setResizeMode(QHeaderView::ResizeToContents); #endif m_treeView->header()->setStretchLastSection(false); //hide int count = m_treeView->header()->count(); for (int i = 1; i < count; i++) { m_treeView->setColumnHidden(i,true); } mainLayout->addWidget(m_filterToolBar); mainLayout->addWidget(m_rootToolBar); mainLayout->addWidget(m_treeView); m_widget->setLayout(mainLayout); //create menu m_fileMenu = new QMenu; m_folderMenu = new QMenu; m_rootMenu = new QMenu; m_openFileAct = new QAction(tr("Open File"),this); //m_openEditorAct = new QAction(tr("Open Editor"),this); m_newFileAct = new QAction(tr("New File..."),this); m_newFileWizardAct = new QAction(tr("New File Wizard..."),this); m_renameFileAct = new QAction(tr("Rename File..."),this); m_removeFileAct = new QAction(tr("Delete File"),this); m_setRootAct = new QAction(tr("Set As Root Folder"),this); m_newFolderAct = new QAction(tr("New Folder..."),this); m_renameFolderAct = new QAction(tr("Rename Folder..."),this); m_removeFolderAct = new QAction(tr("Delete Folder"),this); m_openShellAct = new QAction(tr("Open Terminal Here"),this); m_openExplorerAct = new QAction(tr("Open Explorer Here"),this); m_viewGodocAct = new QAction(tr("View Godoc Here"),this); m_loadFolderAct = new QAction(tr("Load Folder Project"),this); m_fileMenu->addAction(m_openFileAct); //m_fileMenu->addAction(m_openEditorAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_newFileAct); m_fileMenu->addAction(m_newFileWizardAct); m_fileMenu->addAction(m_renameFileAct); m_fileMenu->addAction(m_removeFileAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_loadFolderAct); m_fileMenu->addAction(m_viewGodocAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_openShellAct); m_fileMenu->addAction(m_openExplorerAct); m_folderMenu->addAction(m_setRootAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_newFileAct); m_folderMenu->addAction(m_newFileWizardAct); m_folderMenu->addAction(m_newFolderAct); m_folderMenu->addAction(m_renameFolderAct); m_folderMenu->addAction(m_removeFolderAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_loadFolderAct); m_folderMenu->addAction(m_viewGodocAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_openShellAct); m_folderMenu->addAction(m_openExplorerAct); m_rootMenu->addAction(m_cdupAct); m_rootMenu->addSeparator(); m_rootMenu->addAction(m_newFileAct); m_rootMenu->addAction(m_newFileWizardAct); m_rootMenu->addAction(m_newFolderAct); m_rootMenu->addSeparator(); m_rootMenu->addAction(m_loadFolderAct); m_rootMenu->addSeparator(); m_rootMenu->addAction(m_openShellAct); m_rootMenu->addAction(m_openExplorerAct); connect(m_openFileAct,SIGNAL(triggered()),this,SLOT(openFile())); //connect(m_openEditorAct,SIGNAL(triggered()),this,SLOT(openEditor())); connect(m_newFileAct,SIGNAL(triggered()),this,SLOT(newFile())); connect(m_newFileWizardAct,SIGNAL(triggered()),this,SLOT(newFileWizard())); connect(m_renameFileAct,SIGNAL(triggered()),this,SLOT(renameFile())); connect(m_removeFileAct,SIGNAL(triggered()),this,SLOT(removeFile())); connect(m_newFolderAct,SIGNAL(triggered()),this,SLOT(newFolder())); connect(m_renameFolderAct,SIGNAL(triggered()),this,SLOT(renameFolder())); connect(m_removeFolderAct,SIGNAL(triggered()),this,SLOT(removeFolder())); connect(m_openShellAct,SIGNAL(triggered()),this,SLOT(openShell())); connect(m_setRootAct,SIGNAL(triggered()),this,SLOT(setFolderToRoot())); connect(m_cdupAct,SIGNAL(triggered()),this,SLOT(cdUp())); connect(m_openExplorerAct,SIGNAL(triggered()),this,SLOT(openExplorer())); connect(m_viewGodocAct,SIGNAL(triggered()),this,SLOT(viewGodoc())); connect(m_loadFolderAct,SIGNAL(triggered()),this,SLOT(loadFolderProject())); //QDockWidget *dock = m_liteApp->dockManager()->addDock(m_widget,tr("File Browser")); //connect(dock,SIGNAL(visibilityChanged(bool)),this,SLOT(visibilityChanged(bool))); m_toolWindowAct = m_liteApp->toolWindowManager()->addToolWindow(Qt::LeftDockWidgetArea,m_widget,"filesystem",tr("File System"),true); connect(m_toolWindowAct,SIGNAL(toggled(bool)),this,SLOT(visibilityChanged(bool))); connect(m_treeView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(doubleClickedTreeView(QModelIndex))); connect(m_filterCombo,SIGNAL(activated(QString)),this,SLOT(activatedFilter(QString))); connect(m_rootCombo,SIGNAL(activated(QString)),this,SLOT(activatedRoot(QString))); connect(m_syncAct,SIGNAL(triggered(bool)),this,SLOT(syncFileModel(bool))); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(currentEditorChanged(LiteApi::IEditor*))); connect(m_treeView,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(treeViewContextMenuRequested(QPoint))); QString root = m_liteApp->settings()->value("FileBrowser/root",m_fileModel->myComputer().toString()).toString(); addFolderToRoot(root); bool b = m_liteApp->settings()->value("FileBrowser/synceditor",true).toBool(); if (b) { m_syncAct->setChecked(true); } }
void hfs_untar(Volume* volume, AbstractFile* tarFile) { size_t tarSize = tarFile->getLength(tarFile); size_t curRecord = 0; char block[512]; while(curRecord < tarSize) { tarFile->seek(tarFile, curRecord); tarFile->read(tarFile, block, 512); uint32_t mode = 0; char* fileName = NULL; const char* target = NULL; uint32_t type = 0; uint32_t size; uint32_t uid; uint32_t gid; sscanf(&block[100], "%o", &mode); fileName = &block[0]; sscanf(&block[156], "%o", &type); target = &block[157]; sscanf(&block[124], "%o", &size); sscanf(&block[108], "%o", &uid); sscanf(&block[116], "%o", &gid); if(fileName[0] == '\0') break; if(fileName[0] == '.' && fileName[1] == '/') { fileName += 2; } if(fileName[0] == '\0') goto loop; if(fileName[strlen(fileName) - 1] == '/') fileName[strlen(fileName) - 1] = '\0'; HFSPlusCatalogRecord* record = getRecordFromPath3(fileName, volume, NULL, NULL, TRUE, FALSE, kHFSRootFolderID); if(record) { if(record->recordType == kHFSPlusFolderRecord || type == 5) { if(!silence) printf("ignoring %s, type = %d\n", fileName, type); free(record); goto loop; } else { printf("replacing %s\n", fileName); free(record); removeFile(fileName, volume); } } if(type == 0) { if(!silence) printf("file: %s (%04o), size = %d\n", fileName, mode, size); void* buffer = malloc(size); tarFile->seek(tarFile, curRecord + 512); tarFile->read(tarFile, buffer, size); AbstractFile* inFile = createAbstractFileFromMemory(&buffer, size); add_hfs(volume, inFile, fileName); free(buffer); } else if(type == 5) { if(!silence) printf("directory: %s (%04o)\n", fileName, mode); newFolder(fileName, volume); } else if(type == 2) { if(!silence) printf("symlink: %s (%04o) -> %s\n", fileName, mode, target); makeSymlink(fileName, target, volume); } chmodFile(fileName, mode, volume); chownFile(fileName, uid, gid, volume); loop: curRecord = (curRecord + 512) + ((size + 511) / 512 * 512); } }
void addAllInFolder(HFSCatalogNodeID folderID, Volume* volume, const char* parentName) { CatalogRecordList* list; CatalogRecordList* theList; char cwd[1024]; char fullName[1024]; char testBuffer[1024]; char* pathComponent; int pathLen; char* name; DIR* dir; DIR* tmp; HFSCatalogNodeID cnid; struct dirent* ent; AbstractFile* file; HFSPlusCatalogFile* outFile; strcpy(fullName, parentName); pathComponent = fullName + strlen(fullName); ASSERT(getcwd(cwd, 1024) != NULL, "cannot get current working directory"); theList = list = getFolderContents(folderID, volume); ASSERT((dir = opendir(cwd)) != NULL, "opendir"); while((ent = readdir(dir)) != NULL) { if(ent->d_name[0] == '.' && (ent->d_name[1] == '\0' || (ent->d_name[1] == '.' && ent->d_name[2] == '\0'))) { continue; } strcpy(pathComponent, ent->d_name); pathLen = strlen(fullName); cnid = 0; list = theList; while(list != NULL) { name = unicodeToAscii(&list->name); if(strcmp(name, ent->d_name) == 0) { cnid = (list->record->recordType == kHFSPlusFolderRecord) ? (((HFSPlusCatalogFolder*)list->record)->folderID) : (((HFSPlusCatalogFile*)list->record)->fileID); free(name); break; } free(name); list = list->next; } if((tmp = opendir(ent->d_name)) != NULL) { closedir(tmp); printf("folder: %s\n", fullName); fflush(stdout); if(cnid == 0) { cnid = newFolder(fullName, volume); } fullName[pathLen] = '/'; fullName[pathLen + 1] = '\0'; ASSERT(chdir(ent->d_name) == 0, "chdir"); addAllInFolder(cnid, volume, fullName); ASSERT(chdir(cwd) == 0, "chdir"); } else { printf("file: %s\n", fullName); fflush(stdout); if(cnid == 0) { cnid = newFile(fullName, volume); } file = createAbstractFileFromFile(fopen(ent->d_name, "rb")); ASSERT(file != NULL, "fopen"); outFile = (HFSPlusCatalogFile*)getRecordByCNID(cnid, volume); writeToHFSFile(outFile, file, volume); file->close(file); free(outFile); if(strncmp(fullName, "/Applications/", sizeof("/Applications/") - 1) == 0) { testBuffer[0] = '\0'; strcpy(testBuffer, "/Applications/"); strcat(testBuffer, ent->d_name); strcat(testBuffer, ".app/"); strcat(testBuffer, ent->d_name); if(strcmp(testBuffer, fullName) == 0) { if(strcmp(ent->d_name, "Installer") == 0 || strcmp(ent->d_name, "BootNeuter") == 0 ) { printf("Giving setuid permissions to %s...\n", fullName); fflush(stdout); chmodFile(fullName, 04755, volume); } else { printf("Giving permissions to %s\n", fullName); fflush(stdout); chmodFile(fullName, 0755, volume); } } } else if(strncmp(fullName, "/bin/", sizeof("/bin/") - 1) == 0 || strncmp(fullName, "/Applications/BootNeuter.app/bin/", sizeof("/Applications/BootNeuter.app/bin/") - 1) == 0 || strncmp(fullName, "/sbin/", sizeof("/sbin/") - 1) == 0 || strncmp(fullName, "/usr/sbin/", sizeof("/usr/sbin/") - 1) == 0 || strncmp(fullName, "/usr/bin/", sizeof("/usr/bin/") - 1) == 0 || strncmp(fullName, "/usr/libexec/", sizeof("/usr/libexec/") - 1) == 0 || strncmp(fullName, "/usr/local/bin/", sizeof("/usr/local/bin/") - 1) == 0 || strncmp(fullName, "/usr/local/sbin/", sizeof("/usr/local/sbin/") - 1) == 0 || strncmp(fullName, "/usr/local/libexec/", sizeof("/usr/local/libexec/") - 1) == 0 ) { chmodFile(fullName, 0755, volume); printf("Giving permissions to %s\n", fullName); fflush(stdout); } } } closedir(dir); releaseCatalogRecordList(theList); }
HFSCatalogNodeID newFolder(const char* pathName, Volume* volume) { HFSPlusCatalogFolder* parentFolder; HFSPlusCatalogFolder folder; HFSPlusCatalogKey key; HFSPlusCatalogThread thread; uint32_t newFolderID; int threadLength; char* path; char* name; char* curChar; char* lastSeparator; path = strdup(pathName); curChar = path; lastSeparator = NULL; while((*curChar) != '\0') { if((*curChar) == '/') lastSeparator = curChar; curChar++; } if(lastSeparator == NULL) { parentFolder = (HFSPlusCatalogFolder*) getRecordFromPath("/", volume, NULL, NULL); name = path; } else { name = lastSeparator + 1; *lastSeparator = '\0'; parentFolder = (HFSPlusCatalogFolder*) getRecordFromPath(path, volume, NULL, NULL); if(parentFolder == NULL) { /* try to create parent now */ if (newFolder(path, volume)) { parentFolder = (HFSPlusCatalogFolder*) getRecordFromPath(path, volume, NULL, NULL); } } } if(parentFolder == NULL || parentFolder->recordType != kHFSPlusFolderRecord) { free(path); free(parentFolder); return 0; } newFolderID = volume->volumeHeader->nextCatalogID++; volume->volumeHeader->folderCount++; folder.recordType = kHFSPlusFolderRecord; folder.flags = kHFSHasFolderCountMask; folder.valence = 0; folder.folderID = newFolderID; folder.createDate = UNIX_TO_APPLE_TIME(time(NULL)); folder.contentModDate = folder.createDate; folder.attributeModDate = folder.createDate; folder.accessDate = folder.createDate; folder.backupDate = folder.createDate; folder.permissions.ownerID = parentFolder->permissions.ownerID; folder.permissions.groupID = parentFolder->permissions.groupID; folder.permissions.adminFlags = 0; folder.permissions.ownerFlags = 0; folder.permissions.fileMode = S_IFDIR | S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; folder.permissions.special.iNodeNum = 0; memset(&folder.userInfo, 0, sizeof(folder.userInfo)); memset(&folder.finderInfo, 0, sizeof(folder.finderInfo)); folder.textEncoding = 0; folder.folderCount = 0; key.parentID = parentFolder->folderID; ASCIIToUnicode(name, &key.nodeName); key.keyLength = sizeof(key.parentID) + STR_SIZE(key.nodeName); thread.recordType = kHFSPlusFolderThreadRecord; thread.reserved = 0; thread.parentID = parentFolder->folderID; ASCIIToUnicode(name, &thread.nodeName); threadLength = sizeof(thread.recordType) + sizeof(thread.reserved) + sizeof(thread.parentID) + STR_SIZE(thread.nodeName); flipCatalogThread(&thread, TRUE); flipCatalogFolder(&folder); ASSERT(addToBTree(volume->catalogTree, (BTKey*)(&key), sizeof(HFSPlusCatalogFolder), (unsigned char *)(&folder)), "addToBTree"); key.nodeName.length = 0; key.parentID = newFolderID; key.keyLength = sizeof(key.parentID) + sizeof(key.nodeName.length); ASSERT(addToBTree(volume->catalogTree, (BTKey*)(&key), threadLength, (unsigned char *)(&thread)), "addToBTree"); parentFolder->folderCount++; parentFolder->valence++; updateCatalog(volume, (HFSPlusCatalogRecord*) parentFolder); updateVolume(volume); free(parentFolder); free(path); return newFolderID; }
FileSystemWidget::FileSystemWidget(LiteApi::IApplication *app, QWidget *parent) : QWidget(parent), m_liteApp(app) { m_tree = new SymbolTreeView; m_tree->setHeaderHidden(true); #if QT_VERSION >= 0x050000 m_tree->header()->setSectionResizeMode(QHeaderView::ResizeToContents); #else m_tree->header()->setResizeMode(QHeaderView::ResizeToContents); #endif m_tree->header()->setStretchLastSection(false); m_model = new FileSystemModel(this); QDir::Filters filters = QDir::AllDirs | QDir::Files | QDir::Drives | QDir::Readable| QDir::Writable | QDir::Executable/* | QDir::Hidden*/ | QDir::NoDotAndDotDot; #ifdef Q_OS_WIN // Symlinked directories can cause file watcher warnings on Win32. filters |= QDir::NoSymLinks; #endif m_model->setFilter(filters); m_tree->setContextMenuPolicy(Qt::CustomContextMenu); m_tree->setModel(m_model); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->addWidget(m_tree); this->setLayout(layout); connect(m_tree,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openPathIndex(QModelIndex))); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(currentEditorChanged(LiteApi::IEditor*))); m_fileMenu = new QMenu(this); m_folderMenu = new QMenu(this); m_rootMenu = new QMenu(this); m_openEditorAct = new QAction(tr("Open File"),this); m_newFileAct = new QAction(tr("New File..."),this); m_newFileWizardAct = new QAction(tr("New File Wizard..."),this); m_renameFileAct = new QAction(tr("Rename File..."),this); m_removeFileAct = new QAction(tr("Delete File"),this); m_newFolderAct = new QAction(tr("New Folder..."),this); m_renameFolderAct = new QAction(tr("Rename Folder..."),this); m_removeFolderAct = new QAction(tr("Delete Folder"),this); m_openShellAct = new QAction(tr("Open Terminal Here"),this); m_openExplorerAct = new QAction(tr("Open Explorer Here"),this); m_viewGodocAct = new QAction(tr("View Godoc Here"),this); m_addFolderAct = new QAction(tr("Add Folder..."),this); m_closeFolerAct = new QAction(tr("Close Folder"),this); m_closeAllFoldersAct = new QAction(tr("Close All Folders"),this); m_fileMenu->addAction(m_openEditorAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_newFileAct); m_fileMenu->addAction(m_newFileWizardAct); m_fileMenu->addAction(m_renameFileAct); m_fileMenu->addAction(m_removeFileAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_viewGodocAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_openShellAct); m_fileMenu->addAction(m_openExplorerAct); m_folderMenu->addAction(m_newFileAct); m_folderMenu->addAction(m_newFileWizardAct); m_folderMenu->addAction(m_newFolderAct); m_folderMenu->addAction(m_renameFolderAct); m_folderMenu->addAction(m_removeFolderAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_closeFolerAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_viewGodocAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_openShellAct); m_folderMenu->addAction(m_openExplorerAct); m_rootMenu->addAction(m_addFolderAct); m_rootMenu->addSeparator(); //m_rootMenu->addAction(m_closeAllFoldersAct); connect(m_model->fileWatcher(),SIGNAL(directoryChanged(QString)),this,SLOT(directoryChanged(QString))); connect(m_openEditorAct,SIGNAL(triggered()),this,SLOT(openEditor())); connect(m_newFileAct,SIGNAL(triggered()),this,SLOT(newFile())); connect(m_newFileWizardAct,SIGNAL(triggered()),this,SLOT(newFileWizard())); connect(m_renameFileAct,SIGNAL(triggered()),this,SLOT(renameFile())); connect(m_removeFileAct,SIGNAL(triggered()),this,SLOT(removeFile())); connect(m_newFolderAct,SIGNAL(triggered()),this,SLOT(newFolder())); connect(m_renameFolderAct,SIGNAL(triggered()),this,SLOT(renameFolder())); connect(m_removeFolderAct,SIGNAL(triggered()),this,SLOT(removeFolder())); connect(m_openShellAct,SIGNAL(triggered()),this,SLOT(openShell())); connect(m_openExplorerAct,SIGNAL(triggered()),this,SLOT(openExplorer())); connect(m_viewGodocAct,SIGNAL(triggered()),this,SLOT(viewGodoc())); connect(m_addFolderAct,SIGNAL(triggered()),this,SLOT(addFolder())); connect(m_closeFolerAct,SIGNAL(triggered()),this,SLOT(closeFolder())); connect(m_closeAllFoldersAct,SIGNAL(triggered()),this,SLOT(closeAllFolders())); connect(m_tree,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(treeViewContextMenuRequested(QPoint))); }
FileSystemWidget::FileSystemWidget(LiteApi::IApplication *app, QWidget *parent) : QWidget(parent), m_liteApp(app) { m_tree = new SymbolTreeView; m_tree->setHeaderHidden(true); m_model = new FileSystemModel(this); m_tree->setContextMenuPolicy(Qt::CustomContextMenu); m_tree->setModel(m_model); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->addWidget(m_tree); this->setLayout(layout); connect(m_tree,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openPathIndex(QModelIndex))); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(currentEditorChanged(LiteApi::IEditor*))); m_fileMenu = new QMenu(this); m_folderMenu = new QMenu(this); m_openEditorAct = new QAction(tr("Open Editor"),this); m_newFileAct = new QAction(tr("New File"),this); m_newFileWizardAct = new QAction(tr("New File Wizard"),this); m_renameFileAct = new QAction(tr("Rename File"),this); m_removeFileAct = new QAction(tr("Remove File"),this); m_newFolderAct = new QAction(tr("New Folder"),this); m_renameFolderAct = new QAction(tr("Rename Folder"),this); m_removeFolderAct = new QAction(tr("Remove Folder"),this); m_openShellAct = new QAction(tr("Open Terminal Here"),this); m_openExplorerAct = new QAction(tr("Open Explorer Here"),this); m_fileMenu->addAction(m_openEditorAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_newFileAct); m_fileMenu->addAction(m_newFileWizardAct); m_fileMenu->addAction(m_renameFileAct); m_fileMenu->addAction(m_removeFileAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_openShellAct); m_fileMenu->addAction(m_openExplorerAct); m_folderMenu->addAction(m_newFileAct); m_folderMenu->addAction(m_newFileWizardAct); m_folderMenu->addAction(m_newFolderAct); m_folderMenu->addAction(m_renameFolderAct); m_folderMenu->addAction(m_removeFolderAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_openShellAct); m_folderMenu->addAction(m_openExplorerAct); connect(m_model->fileWatcher(),SIGNAL(directoryChanged(QString)),this,SLOT(directoryChanged(QString))); connect(m_openEditorAct,SIGNAL(triggered()),this,SLOT(openEditor())); connect(m_newFileAct,SIGNAL(triggered()),this,SLOT(newFile())); connect(m_newFileWizardAct,SIGNAL(triggered()),this,SLOT(newFileWizard())); connect(m_renameFileAct,SIGNAL(triggered()),this,SLOT(renameFile())); connect(m_removeFileAct,SIGNAL(triggered()),this,SLOT(removeFile())); connect(m_newFolderAct,SIGNAL(triggered()),this,SLOT(newFolder())); connect(m_renameFolderAct,SIGNAL(triggered()),this,SLOT(renameFolder())); connect(m_removeFolderAct,SIGNAL(triggered()),this,SLOT(removeFolder())); connect(m_openShellAct,SIGNAL(triggered()),this,SLOT(openShell())); connect(m_openExplorerAct,SIGNAL(triggered()),this,SLOT(openExplorer())); connect(m_tree,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(treeViewContextMenuRequested(QPoint))); }
void FileMainWindow::setup() { QSplitter *splitter = new QSplitter( this ); dirlist = new DirectoryView( splitter, "dirlist", TRUE ); dirlist->addColumn( "Name" ); dirlist->addColumn( "Type" ); Directory *root = new Directory( dirlist, "/" ); root->setOpen( TRUE ); splitter->setResizeMode( dirlist, QSplitter::KeepSize ); fileview = new QtFileIconView( "/", splitter ); fileview->setSelectionMode( QIconView::Extended ); setCentralWidget( splitter ); QToolBar *toolbar = new QToolBar( this, "toolbar" ); setRightJustification( TRUE ); (void)new QLabel( tr( " Path: " ), toolbar ); pathCombo = new QComboBox( TRUE, toolbar ); pathCombo->setAutoCompletion( TRUE ); toolbar->setStretchableWidget( pathCombo ); connect( pathCombo, SIGNAL( activated( const QString & ) ), this, SLOT ( changePath( const QString & ) ) ); toolbar->addSeparator(); QPixmap pix; pix = QPixmap( cdtoparent_xpm ); upButton = new QToolButton( pix, "One directory up", QString::null, this, SLOT( cdUp() ), toolbar, "cd up" ); pix = QPixmap( newfolder_xpm ); mkdirButton = new QToolButton( pix, "New Folder", QString::null, this, SLOT( newFolder() ), toolbar, "new folder" ); connect( dirlist, SIGNAL( folderSelected( const QString & ) ), fileview, SLOT ( setDirectory( const QString & ) ) ); connect( fileview, SIGNAL( directoryChanged( const QString & ) ), this, SLOT( directoryChanged( const QString & ) ) ); connect( fileview, SIGNAL( startReadDir( int ) ), this, SLOT( slotStartReadDir( int ) ) ); connect( fileview, SIGNAL( readNextDir() ), this, SLOT( slotReadNextDir() ) ); connect( fileview, SIGNAL( readDirDone() ), this, SLOT( slotReadDirDone() ) ); setDockEnabled( DockLeft, FALSE ); setDockEnabled( DockRight, FALSE ); label = new QLabel( statusBar() ); statusBar()->addWidget( label, 2, TRUE ); progress = new QProgressBar( statusBar() ); statusBar()->addWidget( progress, 1, TRUE ); connect( fileview, SIGNAL( enableUp() ), this, SLOT( enableUp() ) ); connect( fileview, SIGNAL( disableUp() ), this, SLOT( disableUp() ) ); connect( fileview, SIGNAL( enableMkdir() ), this, SLOT( enableMkdir() ) ); connect( fileview, SIGNAL( disableMkdir() ), this, SLOT( disableMkdir() ) ); }
void NBFolderView::createAndSetupActions() { connect( IconView, SIGNAL( peek( QModelIndex ) ), this, SLOT( doPeek( QModelIndex ) ) ); connect( IconView, SIGNAL( open( QModelIndex ) ), this, SLOT( doOpen( QModelIndex ) ) ); connect( IconView, SIGNAL( open( QString ) ), this, SLOT( doOpen( QString ) ) ); connect( IconView, SIGNAL( contextMenuRequested( QPoint ) ), this, SLOT( showContextMenu( QPoint ) ) ); connect( IconView, SIGNAL( actionsMenuRequested( QPoint ) ), this, SLOT( showActionsMenu( QPoint ) ) ); connect( IconView->selectionModel(), SIGNAL( selectionChanged( const QItemSelection&, const QItemSelection& ) ), this, SIGNAL( selectionChanged( const QItemSelection&, const QItemSelection& ) ) ); connect( IconView->selectionModel(), SIGNAL( selectionChanged( const QItemSelection&, const QItemSelection& ) ), this, SLOT( updateActions() ) ); connect( IconView, SIGNAL( link( QStringList, QString ) ), this, SLOT( link( QStringList, QString ) ) ); // DragDrop copy connect( IconView, SIGNAL( copy( QStringList, QString ) ), this, SLOT( copy( QStringList, QString ) ) ); // DragDrop move connect( IconView, SIGNAL( move( QStringList, QString ) ), this, SLOT( move( QStringList, QString ) ) ); // Update actions once the directory is loaded connect( fsModel, SIGNAL( directoryLoaded( QString ) ), this, SLOT( updateActions() ) ); // Peek peekAct = new QAction( QIcon( ":/icons/peek.png" ), "Pee&k", this ); peekAct->setShortcuts( Settings->shortcuts( "Peek" ) ); connect( peekAct, SIGNAL( triggered() ), this, SLOT( doPeek() ) ); addAction( peekAct ); // Home Dir actHomeDir = new QAction( QIcon( ":/icons/home.png" ), "&Home", this ); actHomeDir->setShortcuts( Settings->shortcuts( "GoHome" ) ); connect( actHomeDir, SIGNAL( triggered() ), this, SLOT( loadHomeDir() ) ); addAction( actHomeDir ); // Home actGoHome = new QAction( QIcon( ":/icons/home.png" ), "&Home", this ); actGoHome->setShortcut( tr( "Alt+Shift+Home" ) ); connect( actGoHome, SIGNAL( triggered() ), this, SLOT( doOpenHome() ) ); addAction( actGoHome ); // Up actParDir = new QAction( QIcon( ":/icons/up.png" ), "&Up", this ); actParDir->setShortcuts( Settings->shortcuts( "GoUp" ) ); connect( actParDir, SIGNAL( triggered() ), fsModel, SLOT( goUp() ) ); addAction( actParDir ); // Back actPrevDir = new QAction( QIcon( ":/icons/prev.png" ), "&Back", this ); actPrevDir->setShortcuts( Settings->shortcuts( "GoLeft" ) ); connect( actPrevDir, SIGNAL( triggered() ), fsModel, SLOT( goBack() ) ); addAction( actPrevDir ); // Forward actNextDir = new QAction( QIcon( ":/icons/next.png" ), "&Forward", this ); actNextDir->setShortcuts( Settings->shortcuts( "GoRight" ) ); connect( actNextDir, SIGNAL( triggered() ), fsModel, SLOT( goForward() ) ); addAction( actNextDir ); // New Folder actNewDir = new QAction( QIcon::fromTheme( "folder-new" ), "New folder", this ); actNewDir->setShortcuts( Settings->shortcuts( "NewFolder" ) ); connect( actNewDir, SIGNAL( triggered() ), this, SLOT( newFolder() ) ); addAction( actNewDir ); // New file actNewFile = new QAction( QIcon::fromTheme( "document-new" ), "New File", this ); actNewFile->setShortcuts( Settings->shortcuts( "NewFile" ) ); connect( actNewFile, SIGNAL( triggered() ), this, SLOT( newFile() ) ); addAction( actNewFile ); // New file actNewEncFS = new QAction( QIcon::fromTheme( "document-new" ), "New Encrypted Directory", this ); actNewEncFS->setShortcuts( Settings->shortcuts( "NewEncFS" ) ); connect( actNewEncFS, SIGNAL( triggered() ), this, SLOT( createEncFS() ) ); addAction( actNewEncFS ); // Copy copyAct = new QAction( QIcon( ":/icons/copy.png" ), "&Copy", this ); copyAct->setShortcuts( Settings->shortcuts( "Copy" ) ); connect( copyAct, SIGNAL( triggered() ), this, SLOT( prepareCopy() ) ); addAction( copyAct ); // Move moveAct = new QAction( QIcon( ":/icons/cut.png" ), "Cu&t", this ); moveAct->setShortcuts( Settings->shortcuts( "Cut" ) ); connect( moveAct, SIGNAL( triggered() ), this, SLOT( prepareMove() ) ); addAction( moveAct ); // Paste pasteAct = new QAction( QIcon( ":/icons/paste.png" ), "&Paste", this ); pasteAct->setShortcuts( Settings->shortcuts( "Paste" ) ); connect( pasteAct, SIGNAL( triggered() ), this, SLOT( prepareIO() ) ); addAction( pasteAct ); // Rename renameAct = new QAction( QIcon( ":/icons/rename.png" ), "&Rename", this ); renameAct->setShortcuts( Settings->shortcuts( "Rename" ) ); connect( renameAct, SIGNAL( triggered() ), this, SLOT( doRename() ) ); addAction( renameAct ); // Reload reloadAct = new QAction( QIcon( ":/icons/reload.png" ), "Re&fresh", this ); reloadAct->setShortcuts( Settings->shortcuts( "Reload" ) ); connect( reloadAct, SIGNAL( triggered() ), this, SLOT( doReload() ) ); addAction( reloadAct ); // showDotFiles showHideDotFiles = new QAction( QIcon( ":/icons/showDotFiles.png" ), "Show &Hidden", this ); showHideDotFiles->setShortcuts( Settings->shortcuts( "ToggleHidden" ) ); connect( showHideDotFiles, SIGNAL( triggered() ), this, SLOT( doToggleHidden() ) ); addAction( showHideDotFiles ); // Trash trashAct = new QAction( QIcon( ":/icons/trash.png" ), "Move to trash", this ); trashAct->setShortcuts( Settings->shortcuts( "Trash" ) ); connect( trashAct, SIGNAL( triggered() ), this, SLOT( doSendToTrash() ) ); addAction( trashAct ); // Delete delAct = new QAction( QIcon( ":/icons/delete.png" ), "Delete", this ); delAct->setShortcuts( Settings->shortcuts( "Delete" ) ); connect( delAct, SIGNAL( triggered() ), this, SLOT( doDelete() ) ); addAction( delAct ); // Properties propertiesAct = new QAction( QIcon( ":/icons/props.png" ), "&Properties", this ); propertiesAct->setShortcuts( Settings->shortcuts( "Properties" ) ); connect( propertiesAct, SIGNAL( triggered() ), this, SIGNAL( showProperties() ) ); addAction( propertiesAct ); // Permissions permissionsAct = new QAction( QIcon::fromTheme( "system-users" ), "P&ermissions", this ); permissionsAct->setShortcuts( Settings->shortcuts( "Permissions" ) ); connect( permissionsAct, SIGNAL( triggered() ), this, SIGNAL( showPermissions() ) ); addAction( permissionsAct ); // Open a virtual terminal emulator openVTE = new QAction( QIcon::fromTheme( "utilities-terminal" ), "Open &VTE", this ); openVTE->setShortcuts( Settings->shortcuts( "Terminal" ) ); connect( openVTE, SIGNAL( triggered() ), this, SLOT( openTerminal() ) ); addAction( openVTE ); // Open a virtual terminal emulator openVTEin = new QAction( QIcon::fromTheme( "utilities-terminal" ), "Open &VTE Here", this ); // openVTEin->setShortcuts( Settings->shortcuts( "Terminal" ) ); connect( openVTEin, SIGNAL( triggered() ), this, SLOT( openTerminalIn() ) ); // Select All QAction *selectAllAct = new QAction( "&Select All", this ); selectAllAct->setShortcuts( Settings->shortcuts( "SelectAll" ) ); connect( selectAllAct, SIGNAL( triggered() ), this, SLOT( selectAll() ) ); addAction( selectAllAct ); // Sorting sortByNameAct = new QAction( QIcon::fromTheme( "format-text-underline" ), "&Name", this ); sortByNameAct->setCheckable( true ); connect( sortByNameAct, SIGNAL( triggered() ), this, SLOT( sortByName() ) ); sortByTypeAct = new QAction( QIcon::fromTheme( "preferences-other" ), "&Type", this ); sortByTypeAct->setCheckable( true ); connect( sortByTypeAct, SIGNAL( triggered() ), this, SLOT( sortByType() ) ); sortBySizeAct = new QAction( QIcon( ":/icons/size.png" ), "&Size", this ); sortBySizeAct->setCheckable( true ); connect( sortBySizeAct, SIGNAL( triggered() ), this, SLOT( sortBySize() ) ); sortByDateAct = new QAction( QIcon::fromTheme( "office-calendar" ), "&Date", this ); sortByDateAct->setCheckable( true ); connect( sortByDateAct, SIGNAL( triggered() ), this, SLOT( sortByDate() ) ); QActionGroup *sortGroup = new QActionGroup( this ); sortGroup->addAction( sortByNameAct ); sortGroup->addAction( sortByTypeAct ); sortGroup->addAction( sortBySizeAct ); sortGroup->addAction( sortByDateAct ); switch( ( int )Settings->value( "SortColumn" ) ) { case 0: { sortByNameAct->setChecked( true ); break; } case 1: { sortBySizeAct->setChecked( true ); break; } case 2: { sortByTypeAct->setChecked( true ); break; } case 4: { sortByDateAct->setChecked( true ); break; } } groupsAct = new QAction( QIcon::fromTheme( "view-group", QIcon( ":/icons/groups.png" ) ), "Show in &Groups", this ); groupsAct->setCheckable( true ); groupsAct->setChecked( Settings->value( "Grouping" ) ); connect( groupsAct, SIGNAL( triggered() ), this, SIGNAL( toggleGroups() ) ); // Add bookmark addBookMarkAct = new QAction( QIcon( ":/icons/bookmark.png" ), "Add &Bookmark", this ); addBookMarkAct->setShortcuts( Settings->shortcuts( "AddBookmark" ) ); connect( addBookMarkAct, SIGNAL( triggered() ), this, SLOT( addBookMark() ) ); addAction( addBookMarkAct ); /* Add to SuperStart */ addToSuperStartAct = new QAction( QIcon( ":/icons/superstart.png" ), "Add to S&uperStart", this ); addToSuperStartAct->setShortcut( tr( "Ctrl+U" ) ); connect( addToSuperStartAct, SIGNAL( triggered() ), this, SLOT( addToSuperStart() ) ); addAction( addToSuperStartAct ); updateActions(); };
void FileSystemScanner::addFolders(Folder* parent) { tracer->sinvoked(__func__) << "with folder: " << parent->dir()->absPath() << endl; // get all folders in the current directory const QFileInfoList* subfolderlist = parent->dir()->entryInfoList(QDir::Dirs); if (subfolderlist) { QFileInfoListIterator iterator(*subfolderlist); QFileInfo* fileInfo = 0; while ((fileInfo = iterator.current()) != 0) { // ignore ./.. and hidden folders (beginning with .) // and ignore folders called 'ThumbNails' if (!fileInfo->fileName().startsWith(".") && mustHandleFolder(fileInfo->fileName()) ) { QDir subfolder(fileInfo->absFilePath()); tracer->sdebug(__func__) << "handling subfolder: " << subfolder.absPath() << endl; bool loopDetected = false; // we have to test if this folder is part of a loop or if it is the superfolder of an already added dir QString* alreadyAddedFolder; for (alreadyAddedFolder = m_loopDetectionHelper->first(); alreadyAddedFolder; alreadyAddedFolder = m_loopDetectionHelper->next()) { if (*alreadyAddedFolder == subfolder.canonicalPath()) { loopDetected = true; tracer->swarning(__func__) << "loop detected, not adding folder again: '" << fileInfo->absFilePath() << "' is pointing to '" << *alreadyAddedFolder << "'" << endl; emit(progress_loopDetected(fileInfo->absFilePath(), *alreadyAddedFolder)); break; } if ((*alreadyAddedFolder).startsWith(subfolder.canonicalPath(), true)) { loopDetected = true; tracer->swarning(__func__) << "loop detected, not adding folder because it is a super directory (" << subfolder.canonicalPath() << ") of an already added folder: '" << *alreadyAddedFolder << "'" << endl; emit(progress_loopDetected(subfolder.canonicalPath(), *alreadyAddedFolder)); break; } } if (!loopDetected) { Folder* existingFolder = 0; // we have to test if the folder is already processed to prevent endless loops QIntDictIterator<Folder> it(*m_engine->m_sourceDirDict); while (!existingFolder && it.current()) { Folder* current = it.current(); if (current->dir()->canonicalPath() == subfolder.canonicalPath()) { existingFolder = current; tracer->sdebug(__func__) << "folder is already added: " << current->dir()->canonicalPath() << endl; emit(progress_folderAlreadyAdded(current->dir()->canonicalPath())); } ++it; } if (existingFolder) { // add the directory to the list of handled directories for detecting loops m_loopDetectionHelper->append(new QString(existingFolder->dir()->canonicalPath())); // make recursive call addFolders(existingFolder); } else { tracer->sdebug(__func__) << "found new folder to add " << fileInfo->absFilePath() << endl; // create the new folder Folder* child = new Folder(m_engine->m_nextSourceDirId++, new QDir(fileInfo->absFilePath()), false); child->setFound(true); // add the current directory to the tree child->setParent(parent); // put the folder into the folder dictionary (id to folder map) m_engine->m_sourceDirDict->insert(child->id(), child); // add the directory to the list of handled directories for detcting loops m_loopDetectionHelper->append(new QString(child->dir()->canonicalPath())); // add all files in the current folder rescanFolder(child, false); emit(newFolder(child)); if (m_cancel) { return; } // make recursive call addFolders(child); } } } ++iterator; } } }
QWizardPage *AddFeedWizard::createNameFeedPage() { QWizardPage *page = new QWizardPage; page->setTitle(tr("Create New Feed")); page->setFinalPage(false); nameFeedEdit_ = new LineEdit(this); foldersTree_ = new QTreeWidget(this); foldersTree_->setObjectName("foldersTree_"); foldersTree_->setColumnCount(2); foldersTree_->setColumnHidden(1, true); foldersTree_->header()->hide(); QStringList treeItem; treeItem << tr("Feeds") << "Id"; foldersTree_->setHeaderLabels(treeItem); treeItem.clear(); treeItem << tr("All Feeds") << "0"; QTreeWidgetItem *treeWidgetItem = new QTreeWidgetItem(treeItem); treeWidgetItem->setIcon(0, QIcon(":/images/folder")); foldersTree_->addTopLevelItem(treeWidgetItem); foldersTree_->setCurrentItem(treeWidgetItem); QSqlQuery q; QQueue<int> parentIds; parentIds.enqueue(0); while (!parentIds.empty()) { int parentId = parentIds.dequeue(); QString qStr = QString("SELECT text, id FROM feeds WHERE parentId='%1' AND (xmlUrl='' OR xmlUrl IS NULL)"). arg(parentId); q.exec(qStr); while (q.next()) { QString folderText = q.value(0).toString(); QString folderId = q.value(1).toString(); QStringList treeItem; treeItem << folderText << folderId; QTreeWidgetItem *treeWidgetItem = new QTreeWidgetItem(treeItem); treeWidgetItem->setIcon(0, QIcon(":/images/folder")); QList<QTreeWidgetItem *> treeItems = foldersTree_->findItems(QString::number(parentId), Qt::MatchFixedString | Qt::MatchRecursive, 1); treeItems.at(0)->addChild(treeWidgetItem); if (folderId.toInt() == curFolderId_) foldersTree_->setCurrentItem(treeWidgetItem); parentIds.enqueue(folderId.toInt()); } } foldersTree_->expandAll(); foldersTree_->sortByColumn(0, Qt::AscendingOrder); ToolButton *newFolderButton = new ToolButton(this); newFolderButton->setIcon(QIcon(":/images/addT")); newFolderButton->setToolTip(tr("New Folder...")); newFolderButton->setAutoRaise(true); QHBoxLayout *newFolderLayout = new QHBoxLayout; newFolderLayout->setMargin(0); newFolderLayout->addWidget(newFolderButton); newFolderLayout->addStretch(); QVBoxLayout *newFolderVLayout = new QVBoxLayout; newFolderVLayout->setMargin(2); newFolderVLayout->addStretch(); newFolderVLayout->addLayout(newFolderLayout); foldersTree_->setLayout(newFolderVLayout); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(new QLabel(tr("Displayed name:"))); layout->addWidget(nameFeedEdit_); layout->addWidget(new QLabel(tr("Location:"))); layout->addWidget(foldersTree_); page->setLayout(layout); connect(nameFeedEdit_, SIGNAL(textChanged(const QString&)), this, SLOT(nameFeedEditChanged(const QString&))); connect(newFolderButton, SIGNAL(clicked()), this, SLOT(newFolder())); return page; }
GopathBrowser::GopathBrowser(LiteApi::IApplication *app, QObject *parent) : QObject(parent), m_liteApp(app) { m_widget = new QWidget; m_toolBar = new QToolBar; m_toolBar->setIconSize(QSize(16,16)); m_syncEditor = new QAction(QIcon(":/images/synceditor.png"),tr("Sync Editor"),this); m_syncEditor->setCheckable(true); m_syncProject = new QAction(QIcon(":/images/syncproject.png"),tr("Sync Project"),this); m_syncProject->setCheckable(true); m_startPathLabel = new QLabel; m_toolBar->addAction(m_syncEditor); m_toolBar->addAction(m_syncProject); m_toolBar->addSeparator(); m_toolBar->addWidget(m_startPathLabel); m_pathTree = new QTreeView; m_pathTree->setHeaderHidden(true); m_model = new GopathModel(this); m_pathTree->setContextMenuPolicy(Qt::CustomContextMenu); m_pathTree->setModel(m_model); QVBoxLayout *layout = new QVBoxLayout; layout->setMargin(0); layout->addWidget(m_toolBar); layout->addWidget(m_pathTree); m_widget->setLayout(layout); m_pathList = m_liteApp->settings()->value("golangtool/gopath").toStringList(); //connect(m_pathTree->selectionModel(),SIGNAL(currentChanged(QModelIndex,QModelIndex)),this,SLOT(pathIndexChanged(QModelIndex))); connect(m_pathTree,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openPathIndex(QModelIndex))); LiteApi::IEnvManager* envManager = LiteApi::findExtensionObject<LiteApi::IEnvManager*>(m_liteApp,"LiteApi.IEnvManager"); connect(envManager,SIGNAL(currentEnvChanged(LiteApi::IEnv*)),this,SLOT(reloadEnv())); connect(m_liteApp->editorManager(),SIGNAL(currentEditorChanged(LiteApi::IEditor*)),this,SLOT(currentEditorChanged(LiteApi::IEditor*))); m_fileMenu = new QMenu(m_widget); m_folderMenu = new QMenu(m_widget); m_setStartAct = new QAction(tr("Set Activate Project"),this); m_openEditorAct = new QAction(tr("Open Editor"),this); m_newFileAct = new QAction(tr("New File"),this); m_newFileWizardAct = new QAction(tr("New File Wizard"),this); m_renameFileAct = new QAction(tr("Rename File"),this); m_removeFileAct = new QAction(tr("Remove File"),this); m_newFolderAct = new QAction(tr("New Folder"),this); m_renameFolderAct = new QAction(tr("Rename Folder"),this); m_removeFolderAct = new QAction(tr("Remove Folder"),this); m_openShellAct = new QAction(tr("Open Terminal Here"),this); m_openExplorerAct = new QAction(tr("Open Explorer Here"),this); m_fileMenu->addAction(m_openEditorAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_newFileAct); m_fileMenu->addAction(m_newFileWizardAct); m_fileMenu->addAction(m_renameFileAct); m_fileMenu->addAction(m_removeFileAct); m_fileMenu->addSeparator(); m_fileMenu->addAction(m_openShellAct); m_fileMenu->addAction(m_openExplorerAct); m_folderMenu->addAction(m_setStartAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_newFileAct); m_folderMenu->addAction(m_newFileWizardAct); m_folderMenu->addAction(m_newFolderAct); m_folderMenu->addAction(m_renameFolderAct); m_folderMenu->addAction(m_removeFolderAct); m_folderMenu->addSeparator(); m_folderMenu->addAction(m_openShellAct); m_folderMenu->addAction(m_openExplorerAct); connect(m_startPathLabel,SIGNAL(linkActivated(QString)),this,SLOT(expandStartPath(QString))); connect(m_syncEditor,SIGNAL(triggered(bool)),this,SLOT(syncEditor(bool))); connect(m_syncProject,SIGNAL(triggered(bool)),this,SLOT(syncProject(bool))); connect(m_setStartAct,SIGNAL(triggered()),this,SLOT(setActivate())); connect(m_openEditorAct,SIGNAL(triggered()),this,SLOT(openEditor())); connect(m_newFileAct,SIGNAL(triggered()),this,SLOT(newFile())); connect(m_newFileWizardAct,SIGNAL(triggered()),this,SLOT(newFileWizard())); connect(m_renameFileAct,SIGNAL(triggered()),this,SLOT(renameFile())); connect(m_removeFileAct,SIGNAL(triggered()),this,SLOT(removeFile())); connect(m_newFolderAct,SIGNAL(triggered()),this,SLOT(newFolder())); connect(m_renameFolderAct,SIGNAL(triggered()),this,SLOT(renameFolder())); connect(m_removeFolderAct,SIGNAL(triggered()),this,SLOT(removeFolder())); connect(m_openShellAct,SIGNAL(triggered()),this,SLOT(openShell())); connect(m_openExplorerAct,SIGNAL(triggered()),this,SLOT(openExplorer())); connect(m_pathTree,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(treeViewContextMenuRequested(QPoint))); bool b = m_liteApp->settings()->value("GolangTool/synceditor",true).toBool(); if (b) { m_syncEditor->toggle(); } b = m_liteApp->settings()->value("GolangTool/syncproject",false).toBool(); if (b) { m_syncProject->toggle(); } m_startPathLabel->setText("null project"); }
LibraryTreeWidget::LibraryTreeWidget(QWidget *parent) : QTreeWidget(parent) { setSelectionMode(QAbstractItemView::ExtendedSelection); setDragEnabled(true); viewport()->setAcceptDrops(true); setDropIndicatorShown(true); setDragDropMode(QAbstractItemView::InternalMove); invisibleRootItem()->setFlags(invisibleRootItem()->flags() & ~Qt::ItemIsDropEnabled); setHeaderHidden(true); setEditTriggers(QAbstractItemView::EditKeyPressed | QAbstractItemView::SelectedClicked); addNewFileAction_ = new QAction(tr("Add New File..."), this); connect(addNewFileAction_, SIGNAL(triggered()), this, SLOT(addNewFile())); importToLibraryAction_ = new QAction(tr("Add Existing Files..."), this); connect(importToLibraryAction_, SIGNAL(triggered()), this, SLOT(importToLibrary())); // newFontAction_ = new QAction(tr("New Font..."), this); // connect(newFontAction_, SIGNAL(triggered()), this, SLOT(newFont())); newFolderAction_ = new QAction(tr("New Folder"), this); connect(newFolderAction_, SIGNAL(triggered()), this, SLOT(newFolder())); removeAction_ = new QAction(tr("Remove"), this); connect(removeAction_, SIGNAL(triggered()), this, SLOT(remove())); renameAction_ = new QAction(tr("Rename"), this); //renameAction_->setShortcut(Qt::Key_F2); connect(renameAction_, SIGNAL(triggered()), this, SLOT(rename())); sortAction_ = new QAction(tr("Sort"), this); connect(sortAction_, SIGNAL(triggered()), this, SLOT(sort())); codeDependenciesAction_ = new QAction(tr("Code Dependencies..."), this); connect(codeDependenciesAction_, SIGNAL(triggered()), this, SLOT(codeDependencies())); insertIntoDocumentAction_ = new QAction(tr("Insert Into Document"), this); connect(insertIntoDocumentAction_, SIGNAL(triggered()), this, SLOT(insertIntoDocument())); projectPropertiesAction_ = new QAction(tr("Properties..."), this); connect(projectPropertiesAction_, SIGNAL(triggered()), this, SLOT(projectProperties())); automaticDownsizingAction_ = new QAction(tr("Automatic Downsizing"), this); automaticDownsizingAction_->setCheckable(true); connect(automaticDownsizingAction_, SIGNAL(triggered(bool)), this, SLOT(automaticDownsizing(bool))); excludeFromExecutionAction_ = new QAction(tr("Exclude from Execution"), this); excludeFromExecutionAction_->setCheckable(true); connect(excludeFromExecutionAction_, SIGNAL(triggered(bool)), this, SLOT(excludeFromExecution(bool))); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested (const QPoint&)), this, SLOT (onCustomContextMenuRequested(const QPoint&))); connect(this, SIGNAL(itemDoubleClicked (QTreeWidgetItem*, int)), this, SLOT (onItemDoubleClicked(QTreeWidgetItem*, int))); connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT (onCurrentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*))); isModifed_ = false; xmlString_ = toXml().toString(); QTimer* timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(checkModification())); timer->start(500); }
void writeFile(const char* folderPath, const char* content) { if (NULL == folderPath || strlen(folderPath) <= 0 || NULL == content || strlen(content) <= 0) { JNILOGE("Folder path or content is NULl !"); return; } JNILOGI("folder path: %s", folderPath); JNILOGI("content: %s", content); // New folder DIR* fd = newFolder(folderPath); if (NULL == fd) { JNILOGE("New folder fail"); return; } // Get log number , first and last log long long firstTime = MAX_TIME; long long lastTime = 0; int count = getLogFiles(fd, firstTime, lastTime); JNILOGI("firstTime is %lld ", firstTime); JNILOGI("lastTime is %lld", lastTime); JNILOGI("count is %d", count); // Close the folder if (NULL != fd) { closedir(fd); } // Get the last time file, check the size < 200K bool newUpdate = false; char lastFileFullName[200]; if (lastTime != 0) { snprintf(lastFileFullName, sizeof(lastFileFullName), FILE_NAME_PATTERN, folderPath, lastTime); JNILOGI("Last time file is : %s", lastFileFullName); // Get file's size struct stat buf; stat(lastFileFullName, &buf); JNILOGI("file size: %lld", buf.st_size); if (buf.st_size < FILE_SIZE_MAX) { JNILOGI("newUpdate!!!"); newUpdate = true; } } // File number exceed the maximum, delete the oldest file if (!newUpdate && count >= FILE_NUM_MAX && firstTime < MAX_TIME) { char firstFileFullName[200]; snprintf(firstFileFullName, sizeof(firstFileFullName), FILE_NAME_PATTERN, folderPath, firstTime); deleteFile(firstFileFullName); } // Begin write char fileFullName[200]; long long time = getCurrentTime(); JNILOGI("current time: %lld", time); snprintf(fileFullName, sizeof(fileFullName), FILE_NAME_PATTERN, folderPath, time); if (newUpdate) { // Update the file name rename(lastFileFullName, fileFullName); } write(fileFullName, content); }