void AddMonitorWidget::ShowFolder(string path) { DIR *dirp=NULL; dirp = opendir(path.c_str()); if(dirp == NULL) return ; struct dirent *dp; listwidget->clear(); string name; string par; if(path != "/") { par = path + "/"; } while(dp = readdir(dirp)) { name = dp->d_name; if(name != "." && name != ".." && name[0] == '.') continue; QListWidgetItem* item = new QListWidgetItem; item->setSizeHint(QSize(0,40)); FileItem *itemWidget = new FileItem(this); itemWidget->setItem(QString::fromStdString(name),QString::fromStdString(par)); if(name == ".") listwidget->insertItem(0,item); else if(name == "..") listwidget->insertItem(1,item); else listwidget->addItem(item); listwidget->setItemWidget(item,itemWidget); connect(itemWidget,SIGNAL(SaveSig(int,QString)),this,SLOT(SaveSlot(int,QString))); } }
FileItemsPtr FileState::LookupFilesForHash(const Buffer& hash) { sqlite3_stmt* stmt; sqlite3_prepare_v2(m_db, "SELECT filename,version,device_name,seq_no,file_hash,strftime('%s', file_mtime),file_chmod,file_seg_num,is_complete " " FROM FileState " " WHERE type = 0 AND file_hash = ?", -1, &stmt, 0); _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_OK, sqlite3_errmsg(m_db)); sqlite3_bind_blob(stmt, 1, hash.buf(), hash.size(), SQLITE_STATIC); _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_OK, sqlite3_errmsg(m_db)); FileItemsPtr retval = make_shared<FileItems>(); while (sqlite3_step(stmt) == SQLITE_ROW) { FileItem file; file.set_filename(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0)), sqlite3_column_bytes(stmt, 0)); file.set_version(sqlite3_column_int64(stmt, 1)); file.set_device_name(sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2)); file.set_seq_no(sqlite3_column_int64(stmt, 3)); file.set_file_hash(sqlite3_column_blob(stmt, 4), sqlite3_column_bytes(stmt, 4)); file.set_mtime(sqlite3_column_int(stmt, 5)); file.set_mode(sqlite3_column_int(stmt, 6)); file.set_seg_num(sqlite3_column_int64(stmt, 7)); file.set_is_complete(sqlite3_column_int(stmt, 8)); retval->push_back(file); } _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_DONE, sqlite3_errmsg(m_db)); sqlite3_finalize(stmt); return retval; }
static void for_each_child_callback(const char *filename, int attrib, int param) { #ifdef WORKAROUND_64BITS_SUPPORT FileItem* fileitem = for_each_child_callback_param; #else FileItem* fileitem = (FileItem*)param; #endif FileItem* child; const char *filename_without_path = get_filename(filename); if (*filename_without_path == '.' && (ustrcmp(filename_without_path, ".") == 0 || ustrcmp(filename_without_path, "..") == 0)) return; child = get_fileitem_by_path(filename, false); if (!child) { ASSERT(fileitem != NULL); child = new FileItem(fileitem); child->filename = filename; child->displayname = filename_without_path; child->attrib = attrib; put_fileitem(child); } else { ASSERT(child->parent == fileitem); } fileitem->insertChildSorted(child); }
void PrinterSelectionView::MessageReceived(BMessage* msg) { int32 index; switch (msg->what) { case 'sel': if (msg->FindInt32("index", &index) == B_OK) { FileItem* file = (FileItem*)fVendors->ItemAt(index); if (file != NULL) { FillPrinters(file->GetFile()); } } break; case 'prnt': if (msg->FindInt32("index", &index) == B_OK) { FileItem* file = (FileItem*)fPrinters->ItemAt(index); if (file != NULL) { BMessage copy(*Message()); copy.AddString("file", file->GetFile()); InvokeNotify(©); } } break; } BView::MessageReceived(msg); }
void TreeView::getTreeSelectedItems(QStringList& selectedItems) { selectedItems.clear(); QList<QTreeWidgetItem*> ls = QTreeWidget::selectedItems(); FOREACH (QList<QTreeWidgetItem*>, it, ls) { FileItem* f = static_cast<FileItem*>(*it); selectedItems.append(f->fullName()); }
bool TreeView::isDir(SCRef fileName) { // if currentItem is NULL or is different from fileName // return false, because treeview is not updated while // not visible, so could be out of sync. FileItem* item = static_cast<FileItem*>(currentItem()); if (item == NULL || item->fullName() != fileName) return false; return dynamic_cast<DirItem*>(item); }
QByteArray WebUtils::postByUrl(const QUrl &url, const QMap<QString, QString> &sysAndAppParams, const QMap<QString, FileItem> &tmpFiles) { QHttpMultiPart multiParts(QHttpMultiPart::FormDataType); QMapIterator<QString, QString> appParamIter(sysAndAppParams); while (appParamIter.hasNext()) { appParamIter.next(); QHttpPart appParamPart; appParamPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain; charset = UTF-8")); appParamPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name =" + appParamIter.key().toUtf8())); appParamPart.setBody(appParamIter.value().toUtf8()); multiParts.append(appParamPart); } QMapIterator<QString, FileItem> i(tmpFiles); while (i.hasNext()) { i.next(); FileItem fileItem = i.value(); QHttpPart filePart; filePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(fileItem.getMimeType())); QString disposition = QString("form-data; name = %1; filename = %2") .arg(i.key()).arg(fileItem.getFileName()); filePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(disposition)); filePart.setBody(fileItem.getContent()); multiParts.append(filePart); } QNetworkReply *reply = qnam.post(QNetworkRequest(url), &multiParts); QEventLoop loop; connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (reply->error()) { qDebug() << reply->errorString(); return reply->errorString().toUtf8(); } else if (!redirectionTarget.isNull()) { QUrl newUrl = url.resolved(redirectionTarget.toUrl()); reply->deleteLater(); return postByUrl(newUrl, sysAndAppParams, tmpFiles); } QByteArray returnStr = reply->readAll(); reply->deleteLater(); return returnStr; }
RemoveAll::RemoveAll(const char *path) { set_show_all(); update(path); for( int i=0; i<dir_list.total; ++i ) { FileItem *fi = get_entry(i); const char *fp = fi->get_path(); if( fi->get_is_dir() ) removeDir(fp); else RemoveFile::removeFileWait(fp); } printf("RemoveAll::deleting directory %s\n", path); rmdir(path); }
void Directory::setOpen(bool o) { if (o) setPixmap(folderOpen); else setPixmap(folderClosed); if (o && !childCount()) { QString s(fullName()); QDir thisDir(s); if (!thisDir.isReadable()) { readable = FALSE; setExpandable(FALSE); return; } listView()->setUpdatesEnabled(FALSE); const QFileInfoList * files = thisDir.entryInfoList(); if (files) { QFileInfoListIterator it(*files); QFileInfo * fi; while((fi = it.current()) != 0) { ++it; if (fi->fileName() == "." || fi->fileName() == ".." ); // nothing else if (fi->isSymLink() && !showDirsOnly) { FileItem *item = new FileItem(this, fi->fileName(), "Symbolic Link" ); item->setPixmap(fileNormal); } else if (fi->isDir()) (void)new Directory(this, fi->fileName()); else if (!showDirsOnly) { FileItem *item = new FileItem(this, fi->fileName(), fi->isFile() ? "File" : "Special"); item->setPixmap(fileNormal); } } } listView()->setUpdatesEnabled(TRUE); } QListViewItem::setOpen(o); }
void BookmarkList::slotChanged( QTreeWidgetItem * item ) { BookmarkItem* bmItem = dynamic_cast<BookmarkItem*>( item ); if ( bmItem && bmItem->viewport().isValid() ) { bmItem->bookmark().setFullText( bmItem->text( 0 ) ); m_document->bookmarkManager()->save(); } FileItem* fItem = dynamic_cast<FileItem*>( item ); if ( fItem ) { const KUrl url = fItem->data( 0, UrlRole ).value< KUrl >(); m_document->bookmarkManager()->renameBookmark( url, fItem->text( 0 ) ); m_document->bookmarkManager()->save(); } }
void FileBrowserTreeWidget::mouseMoveEvent( QMouseEvent * me ) { if( m_mousePressed == true && ( m_pressPos - me->pos() ).manhattanLength() > QApplication::startDragDistance() ) { // make sure any playback is stopped mouseReleaseEvent( NULL ); FileItem * f = dynamic_cast<FileItem *>( itemAt( m_pressPos ) ); if( f != NULL ) { switch( f->type() ) { case FileItem::PresetFile: new StringPairDrag( f->handling() == FileItem::LoadAsPreset ? "presetfile" : "pluginpresetfile", f->fullName(), embed::getIconPixmap( "preset_file" ), this ); break; case FileItem::SampleFile: new StringPairDrag( "samplefile", f->fullName(), embed::getIconPixmap( "sample_file" ), this ); break; case FileItem::SoundFontFile: new StringPairDrag( "soundfontfile", f->fullName(), embed::getIconPixmap( "soundfont_file" ), this ); break; case FileItem::VstPluginFile: new StringPairDrag( "vstpluginfile", f->fullName(), embed::getIconPixmap( "vst_plugin_file" ), this ); break; case FileItem::MidiFile: // don't allow dragging FLP-files as FLP import filter clears project // without asking // case fileItem::FlpFile: new StringPairDrag( "importedproject", f->fullName(), embed::getIconPixmap( "midi_file" ), this ); break; case FileItem::ProjectFile: new StringPairDrag( "projectfile", f->fullName(), embed::getIconPixmap( "project_file" ), this ); break; default: break; } } } }
/** * Build a new directory at the given path. * @param path Path of the directory. * @return Built directory. * @Throws SystemException When creation files. */ Directory *Directory::make(Path path) { errno = 0; // Build the directory #if defined(__MINGW__) || defined(__MINGW32__) if(mkdir(&path.toString()) < 0) throw SystemException(errno, "file"); #else if(mkdir(&path.toString(), 0777) < 0) throw SystemException(errno, "file"); #endif // Get the file FileItem *item = FileItem::get(path); ASSERT(item); Directory *dir = item->toDirectory(); ASSERT(dir); return dir; }
void FileBrowserTreeWidget::activateListItem(QTreeWidgetItem * item, int column ) { FileItem * f = dynamic_cast<FileItem *>( item ); if( f == NULL ) { return; } if( f->handling() == FileItem::LoadAsProject || f->handling() == FileItem::ImportAsProject ) { handleFile( f, NULL ); } else if( f->handling() != FileItem::NotSupported ) { InstrumentTrack * it = dynamic_cast<InstrumentTrack *>( Track::create( Track::InstrumentTrack, Engine::getBBTrackContainer() ) ); handleFile( f, it ); } }
void FileState::LookupFilesInFolder(const function<void(const FileItem&)>& visitor, const std::string& folder, int offset /*=0*/, int limit /*=-1*/) { sqlite3_stmt* stmt; sqlite3_prepare_v2(m_db, "SELECT filename,version,device_name,seq_no,file_hash,strftime('%s', file_mtime),file_chmod,file_seg_num,is_complete " " FROM FileState " " WHERE type = 0 AND directory = ?" " LIMIT ? OFFSET ?", -1, &stmt, 0); if (folder.size() == 0) sqlite3_bind_null(stmt, 1); else sqlite3_bind_text(stmt, 1, folder.c_str(), folder.size(), SQLITE_STATIC); sqlite3_bind_int(stmt, 2, limit); sqlite3_bind_int(stmt, 3, offset); while (sqlite3_step(stmt) == SQLITE_ROW) { FileItem file; file.set_filename(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0)), sqlite3_column_bytes(stmt, 0)); file.set_version(sqlite3_column_int64(stmt, 1)); file.set_device_name(sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2)); file.set_seq_no(sqlite3_column_int64(stmt, 3)); file.set_file_hash(sqlite3_column_blob(stmt, 4), sqlite3_column_bytes(stmt, 4)); file.set_mtime(sqlite3_column_int(stmt, 5)); file.set_mode(sqlite3_column_int(stmt, 6)); file.set_seg_num(sqlite3_column_int64(stmt, 7)); file.set_is_complete(sqlite3_column_int(stmt, 8)); visitor(file); } _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_DONE, sqlite3_errmsg(m_db)); sqlite3_finalize(stmt); }
void FileBrowserTreeWidget::contextMenuEvent(QContextMenuEvent * e ) { FileItem * f = dynamic_cast<FileItem *>( itemAt( e->pos() ) ); if( f != NULL && ( f->handling() == FileItem::LoadAsPreset || f->handling() == FileItem::LoadByPlugin ) ) { m_contextMenuItem = f; QMenu contextMenu( this ); contextMenu.addAction( tr( "Send to active instrument-track" ), this, SLOT( sendToActiveInstrumentTrack() ) ); contextMenu.addAction( tr( "Open in new instrument-track/" "Song-Editor" ), this, SLOT( openInNewInstrumentTrackSE() ) ); contextMenu.addAction( tr( "Open in new instrument-track/" "B+B Editor" ), this, SLOT( openInNewInstrumentTrackBBE() ) ); contextMenu.exec( e->globalPos() ); m_contextMenuItem = NULL; } }
void FileBrowserTreeWidget::mousePressEvent(QMouseEvent * me ) { QTreeWidget::mousePressEvent( me ); if( me->button() != Qt::LeftButton ) { return; } QTreeWidgetItem * i = itemAt( me->pos() ); if ( i ) { // TODO: Restrict to visible selection // if ( _me->x() > header()->cellPos( header()->mapToActual( 0 ) ) // + treeStepSize() * ( i->depth() + ( rootIsDecorated() ? // 1 : 0 ) ) + itemMargin() || // _me->x() < header()->cellPos( // header()->mapToActual( 0 ) ) ) // { m_pressPos = me->pos(); m_mousePressed = true; // } } FileItem * f = dynamic_cast<FileItem *>( i ); if( f != NULL ) { m_pphMutex.lock(); if( m_previewPlayHandle != NULL ) { Engine::mixer()->removePlayHandle( m_previewPlayHandle ); m_previewPlayHandle = NULL; } // in special case of sample-files we do not care about // handling() rather than directly creating a SamplePlayHandle if( f->type() == FileItem::SampleFile ) { TextFloat * tf = TextFloat::displayMessage( tr( "Loading sample" ), tr( "Please wait, loading sample for " "preview..." ), embed::getIconPixmap( "sample_file", 24, 24 ), 0 ); qApp->processEvents( QEventLoop::ExcludeUserInputEvents ); SamplePlayHandle * s = new SamplePlayHandle( f->fullName() ); s->setDoneMayReturnTrue( false ); m_previewPlayHandle = s; delete tf; } else if( f->type() != FileItem::VstPluginFile && ( f->handling() == FileItem::LoadAsPreset || f->handling() == FileItem::LoadByPlugin ) ) { m_previewPlayHandle = new PresetPreviewPlayHandle( f->fullName(), f->handling() == FileItem::LoadByPlugin ); } if( m_previewPlayHandle != NULL ) { if( !Engine::mixer()->addPlayHandle( m_previewPlayHandle ) ) { m_previewPlayHandle = NULL; } } m_pphMutex.unlock(); } }
const QString TreeView::fullName(QTreeWidgetItem* item) { FileItem* f = static_cast<FileItem*>(item); return (item ? f->fullName() : ""); }
bool FileState::LookupFilesInFolderRecursively(const function<void(const FileItem&)>& visitor, const std::string& folder, int offset /*=0*/, int limit /*=-1*/) { _LOG_DEBUG("LookupFilesInFolderRecursively: [" << folder << "]"); if (limit >= 0) limit++; sqlite3_stmt* stmt; if (folder != "") { /// @todo Do something to improve efficiency of this query. Right now it is basically scanning the whole database sqlite3_prepare_v2(m_db, "SELECT filename,version,device_name,seq_no,file_hash,strftime('%s', file_mtime),file_chmod,file_seg_num,is_complete " " FROM FileState " " WHERE type = 0 AND is_dir_prefix(?, directory)=1 " " ORDER BY filename " " LIMIT ? OFFSET ?", -1, &stmt, 0); // there is a small ambiguity with is_prefix matching, but should be ok for now _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_OK, sqlite3_errmsg(m_db)); sqlite3_bind_text(stmt, 1, folder.c_str(), folder.size(), SQLITE_STATIC); _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_OK, sqlite3_errmsg(m_db)); sqlite3_bind_int(stmt, 2, limit); sqlite3_bind_int(stmt, 3, offset); } else { sqlite3_prepare_v2(m_db, "SELECT filename,version,device_name,seq_no,file_hash,strftime('%s', file_mtime),file_chmod,file_seg_num,is_complete " " FROM FileState " " WHERE type = 0" " ORDER BY filename " " LIMIT ? OFFSET ?", -1, &stmt, 0); sqlite3_bind_int(stmt, 1, limit); sqlite3_bind_int(stmt, 2, offset); } _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_OK, sqlite3_errmsg(m_db)); while (sqlite3_step(stmt) == SQLITE_ROW) { if (limit == 1) break; FileItem file; file.set_filename(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0)), sqlite3_column_bytes(stmt, 0)); file.set_version(sqlite3_column_int64(stmt, 1)); file.set_device_name(sqlite3_column_blob(stmt, 2), sqlite3_column_bytes(stmt, 2)); file.set_seq_no(sqlite3_column_int64(stmt, 3)); file.set_file_hash(sqlite3_column_blob(stmt, 4), sqlite3_column_bytes(stmt, 4)); file.set_mtime(sqlite3_column_int(stmt, 5)); file.set_mode(sqlite3_column_int(stmt, 6)); file.set_seg_num(sqlite3_column_int64(stmt, 7)); file.set_is_complete(sqlite3_column_int(stmt, 8)); visitor(file); limit--; } _LOG_DEBUG_COND(sqlite3_errcode(m_db) != SQLITE_DONE, sqlite3_errmsg(m_db)); sqlite3_finalize(stmt); return (limit == 1); }