SOL9 2.0 Class: FileListBox

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * FileListBox.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.02.18
#pragma once

#include <sol\String.h>
#include <sol\ListBox.h>
#include <sol\Directory.h>


namespace SOL {

class FileListBox :public ListBox {
private:

    String    directory;
    String    fileSpec;

    long    attribute;


public:
    FileListBox(): ListBox() { }

public:
    FileListBox(View* parent, const TCHAR* label, Args& args)
    :ListBox(parent, label, 
        args.set(XmNstyle, (ulong)LBS_STANDARD))
    {

        // Setting default values.
        Directory dir;
        //dir.getCwd(directory, _MAX_PATH);
        dir.getCwd(directory);

        //strcpy_s(fileSpec, sizeof(fileSpec), "*.*");
    
        fileSpec = _T("*.*");

        attribute = FILE_ATTRIBUTE_ARCHIVE|
        FILE_ATTRIBUTE_DIRECTORY|
        FILE_ATTRIBUTE_HIDDEN|     
        FILE_ATTRIBUTE_NORMAL|    
        FILE_ATTRIBUTE_READONLY| 
        FILE_ATTRIBUTE_SYSTEM;
    }

public:
    ~FileListBox()
    {
    }


public:
    virtual Boolean create(View* parent, const TCHAR* label, Args& args)
    {
        Boolean rc = ListBox::create(parent, label, 
            args.set(XmNstyle, (ulong)LBS_STANDARD));

        // Setting default values.
        Directory dir;
        dir.getCwd(directory);//, _MAX_PATH);
        //strcpy_s(fileSpec, _MAX_FNAME, "*.*");
        fileSpec = _T("*.*");

        attribute = FILE_ATTRIBUTE_ARCHIVE|
        FILE_ATTRIBUTE_DIRECTORY|
        FILE_ATTRIBUTE_HIDDEN|     
        FILE_ATTRIBUTE_NORMAL|    
        FILE_ATTRIBUTE_READONLY| 
        FILE_ATTRIBUTE_SYSTEM;

        return rc;
    }


public:
    void setup(const TCHAR* dir, const TCHAR* spec, int attr)
    {
           TCHAR pathspec[_MAX_PATH];

        setDirectory(dir);
        setFileSpec(spec);
        setAttribute(attr);

        if(dir[strlen(dir)-1] == '\\') {
            _stprintf_s(pathspec, _MAX_PATH, _T("%s%s"), dir, spec);
        }
        else {
            _stprintf_s(pathspec, _MAX_PATH, _T("%s\\%s"), dir, spec);
        }
        findFiles(attribute, pathspec);
    }


public:
    void update()
    {
           TCHAR pathspec[_MAX_PATH];
        _stprintf_s(pathspec, _MAX_PATH, 
            _T("%s\\%s"), (const TCHAR*)directory,
            (const TCHAR*)fileSpec);

        resetContent();

        findFiles(attribute, pathspec);
    }

public:
    // Give a TCHAR array for fileName.
    // For example:TCHAR fileName[_MAX_PATH];
    void getFileName(String&  fileName)
    {
        fileName = "";
        TCHAR buffer[_MAX_PATH];
        memset(buffer, (TCHAR)0, _MAX_PATH);
        int indx = getCurSel();
        if(indx != LB_ERR) {
            getText(indx, buffer);
            fileName = buffer;
        }
    }
public:
    // Give a TCHAR array for pathName.
    // For example:TCHAR pathName[_MAX_PATH];
    void FileListBox::getPathName(String& pathName)
    {
        TCHAR name[_MAX_PATH];
        memset(name, (TCHAR)0, _MAX_PATH);
        int indx = getCurSel();
        if(indx != LB_ERR) {
            getText(indx, name);
    

            TCHAR fullPath[_MAX_PATH];
            _stprintf_s(fullPath, _MAX_PATH, _T("%s\\%s"), 
                (const TCHAR*)directory, name);

            pathName = fullPath;
        }
    }

public:
    TCHAR* getPathName()
    {
        int indx = getCurSel();
        TCHAR* pathName = NULL;
        if(indx != LB_ERR) {
            const TCHAR* cdir = (const TCHAR*)directory;
            int len = getTextLen(indx);
            TCHAR* item = new TCHAR[len+1];
            getText(indx, item);
            int slen = strlen(cdir)+strlen(item)+2;
            pathName = new TCHAR[slen];
            _stprintf_s(pathName, slen, _T("%s\\%s"), cdir, item);         
            delete [] item;
        }
        return pathName;
    }

    void     getDirectory(String& dir) {
            dir = directory;
    }


    void     getFileSpec(String& spec) {
        spec = this->fileSpec;
    }

    void     setAttribute(long  attr) {
            this->attribute = attr;
    }

    void     setDirectory(const TCHAR*  dir) {
            this->directory = dir;
    }

    void setFileSpec(const TCHAR* string) {
        this->fileSpec = string;
    }

};

}


Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.