Content of the ProfilePanel and Theme list now sorted alphabetically on Linux too (see issue 853)

This commit is contained in:
Hombre
2013-10-09 00:23:08 +02:00
parent a101e04371
commit 44268074d8
3 changed files with 12 additions and 1 deletions

View File

@@ -1065,6 +1065,7 @@ void Preferences::parseDir (Glib::ustring dirname, std::vector<Glib::ustring>& i
if (!safe_file_test (fname, Glib::FILE_TEST_IS_DIR) && sname.size() >= ext.size() && sname.substr (sname.size()-ext.size(), ext.size()).casefold() == ext)
items.push_back (sname.substr(0,sname.size()-ext.size()));
}
std::sort(items.begin(), items.end());
delete dir;
}

View File

@@ -113,6 +113,10 @@ void ProfileStore::_parseProfiles () {
currDir = "${G}";
parseDir (p2, virtualPath, currDir, 0, 0, displayLevel0);
}
// sort profiles
std::sort(entries.begin(), entries.end(), SortProfiles() );
// entries and partProfiles are empty, but the entry and profiles already exist (they have survived to clearFileList and clearProfileList)
if (!internalDefaultEntry)
internalDefaultEntry = new ProfileStoreEntry(Glib::ustring("(") + M("PROFILEPANEL_PINTERNAL") + Glib::ustring(")"), PSET_FILE, 0, 0);
@@ -195,7 +199,7 @@ bool ProfileStore::parseDir (Glib::ustring& realPath, Glib::ustring& virtualPath
// map the partial profile
partProfiles[filePSE] = pProf;
//partProfiles.insert( std::pair<ProfileStoreEntry*, rtengine::procparams::AutoPartialProfile*> (folderPSE, pProf) );
//partProfiles.insert( std::pair<ProfileStoreEntry*, rtengine::procparams::AutoPartialProfile*> (filePSE, pProf) );
}
else if( options.rtSettings.verbose ) {
printf ("failed!\n");

View File

@@ -125,6 +125,12 @@ class ProfileStore {
} StoreState;
private:
struct SortProfiles {
bool operator ()(const ProfileStoreEntry* const a1, const ProfileStoreEntry* const a2) {
return a1->parentFolderId == a2->parentFolderId ? a1->label < a2->label : a1->parentFolderId < a2->parentFolderId;
}
};
MyMutex *parseMutex;
StoreState storeState;
rtengine::procparams::AutoPartialProfile *internalDefaultProfile;