Ejemplo n.º 1
0
    /// We want the timestamps to be sorted in ascending order to get the latest save
    /// first, but we want the directories to
    /// a) always be first
    /// b) be sorted alphabetically
    /// This custom comparer achieves these goals.
    static bool DirectoryAwareCmp(const Row& row1, const Row& row2, int column_int) {
        std::string key1(row1.SortKey(0));
        std::string key2(row2.SortKey(0));

        const bool row1_is_directory = dynamic_cast<const SaveFileDirectoryRow*>(&row1);
        const bool row2_is_directory = dynamic_cast<const SaveFileDirectoryRow*>(&row2);
        if (!row1_is_directory && !row2_is_directory) {
            return key1.compare(key2) <= 0;
        } else if ( row1_is_directory && row2_is_directory ) {
            // Directories always return directory name as sort key
            return key1.compare(key2) >= 0;
        } else {
            return ( !row1_is_directory && row2_is_directory );
        }
    }