Ejemplo n.º 1
0
//==============================================================================
juce::XmlElement* CodeFileList::createXmlState()
{
    juce::XmlElement* state = new juce::XmlElement ("CodeFileList");

    for (int i = getNumFiles(); --i >= 0;)
    {
        juce::XmlElement* fileState = new juce::XmlElement ("CodeFile");
        fileState->setAttribute ("Path", getFile (i).getFullPathName());

        state->prependChildElement (fileState);
    }

    return state;
}
Ejemplo n.º 2
0
/*
	Goes through the spool queue directory and creates a linked list
	of queueEntry nodes, 1 node for each file, sorted by order in
	which files were put into the queue.
*/
queueEntry *getFiles() {
	DIR *dir;
	struct dirent *f;
	int numFiles = getNumFiles();
	if(numFiles == 0) return NULL;
	queueEntry *root = NULL;
	
	//iterate over every file in queue
	if((dir = opendir(QUEUE_DIR)) != NULL) {
		while((f = readdir(dir)) != NULL) {
		
			if(strcmp(f->d_name, ".") == 0 || strcmp(f->d_name, "..") == 0 || strcmp(f->d_name, "index.txt") == 0 ) {
				continue;
			}
			queueEntry *entry = (queueEntry *) malloc(sizeof(queueEntry));
			entry->next = NULL;
			entry->prev = NULL;
			char name[128] = "";
			strncpy(name, f->d_name, strlen(f->d_name)+1);
			char *token = strtok(name, "_");
			
			//create entry->name and entry->unqiueName
			strncpy(entry->name, token, strlen(token)+1);
			strncpy(entry->uniqueName, f->d_name+(strlen(token)+1), (strlen(f->d_name) - strlen(token)));
			
			char path[1024] = "";
			strncpy(path, QUEUE_DIR, strlen(QUEUE_DIR));
			strncat(path, f->d_name, strlen(f->d_name) + 1);
			
			struct stat statbuf;
			if(stat(path, &statbuf) == -1) {
				printf("Error getting file stats for file: %s\n", path);
				return NULL;
			}
			
			int owner = getUserId(f->d_name);
			if(owner <= 0) {
				printf("Error getting owner of file from queue index\n");
				return NULL;
			}
			
			entry->owner = owner;
			entry->time = statbuf.st_mtime;
			
			root = insert(root, entry);
		}
		closedir(dir);
	}	
	 return root;
}
//==============================================================================
int RecentlyOpenedFilesList::createPopupMenuItems (PopupMenu& menuToAddTo,
                                                   const int baseItemId,
                                                   const bool showFullPaths,
                                                   const bool dontAddNonExistentFiles,
                                                   const File** filesToAvoid)
{
    int num = 0;

    for (int i = 0; i < getNumFiles(); ++i)
    {
        const File f (getFile(i));

        if ((! dontAddNonExistentFiles) || f.exists())
        {
            bool needsAvoiding = false;

            if (filesToAvoid != nullptr)
            {
                for (const File** avoid = filesToAvoid; *avoid != nullptr; ++avoid)
                {
                    if (f == **avoid)
                    {
                        needsAvoiding = true;
                        break;
                    }
                }
            }

            if (! needsAvoiding)
            {
                menuToAddTo.addItem (baseItemId + i,
                                     showFullPaths ? f.getFullPathName()
                                                   : f.getFileName());
                ++num;
            }
        }
    }

    return num;
}
void RecentlyOpenedFilesList::removeNonExistentFiles()
{
    for (int i = getNumFiles(); --i >= 0;)
        if (! getFile(i).exists())
            files.remove (i);
}
//==============================================================================
void RecentlyOpenedFilesList::setMaxNumberOfItems (const int newMaxNumber)
{
    maxNumberOfItems = jmax (1, newMaxNumber);

    files.removeRange (maxNumberOfItems, getNumFiles());
}