2011-06-03 22:31:09 +02:00
|
|
|
/****************************************************************************
|
|
|
|
* Copyright (C) 2011
|
|
|
|
* by Dimok
|
|
|
|
*
|
|
|
|
* This software is provided 'as-is', without any express or implied
|
|
|
|
* warranty. In no event will the authors be held liable for any
|
|
|
|
* damages arising from the use of this software.
|
|
|
|
*
|
|
|
|
* Permission is granted to anyone to use this software for any
|
|
|
|
* purpose, including commercial applications, and to alter it and
|
|
|
|
* redistribute it freely, subject to the following restrictions:
|
|
|
|
*
|
|
|
|
* 1. The origin of this software must not be misrepresented; you
|
|
|
|
* must not claim that you wrote the original software. If you use
|
|
|
|
* this software in a product, an acknowledgment in the product
|
|
|
|
* documentation would be appreciated but is not required.
|
|
|
|
*
|
|
|
|
* 2. Altered source versions must be plainly marked as such, and
|
|
|
|
* must not be misrepresented as being the original software.
|
|
|
|
*
|
|
|
|
* 3. This notice may not be removed or altered from any source
|
|
|
|
* distribution.
|
|
|
|
***************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include "CCategoryList.hpp"
|
|
|
|
#include "language/gettext.h"
|
|
|
|
#include "FileOperations/fileops.h"
|
|
|
|
#include "svnrev.h"
|
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
#define VALID_CONFIG_REV 1085
|
2011-06-03 22:31:09 +02:00
|
|
|
|
|
|
|
CCategoryList CategoryList;
|
|
|
|
|
|
|
|
CCategoryList::CCategoryList()
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
clear();
|
|
|
|
goToFirst();
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
2011-06-22 19:57:37 +02:00
|
|
|
void CCategoryList::clear()
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
nameList.clear();
|
|
|
|
nameList[0] = tr("All");
|
2011-06-22 19:57:37 +02:00
|
|
|
}
|
|
|
|
|
2011-06-03 22:31:09 +02:00
|
|
|
const char * CCategoryList::operator[](unsigned int id)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
map<unsigned int, string>::iterator itr = nameList.find(id);
|
|
|
|
if(itr == nameList.end())
|
|
|
|
return NULL;
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
return nameList[id].c_str();
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool CCategoryList::AddCategory(const string &name)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
if(findCategory(name))
|
|
|
|
return false;
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
unsigned int i = 1;
|
|
|
|
map<unsigned int, string>::iterator itr;
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
//! Find next free key
|
|
|
|
while((itr = nameList.find(i)) != nameList.end())
|
|
|
|
i++;
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
nameList[i] = name;
|
|
|
|
listIter = nameList.find(i);
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
return true;
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool CCategoryList::SetCategory(unsigned int id, const string &name)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
RemoveCategory(name);
|
|
|
|
nameList[id] = name;
|
|
|
|
listIter = nameList.find(id);
|
|
|
|
return true;
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void CCategoryList::RemoveCategory(const string &name)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
for (map<unsigned int, string>::iterator itr = nameList.begin(); itr != nameList.end(); itr++)
|
|
|
|
{
|
|
|
|
if(strcasecmp(name.c_str(), itr->second.c_str()) == 0)
|
|
|
|
{
|
|
|
|
nameList.erase(itr);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void CCategoryList::RemoveCategory(unsigned int id)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
map<unsigned int, string>::iterator itr = nameList.find(id);
|
2011-06-03 22:31:09 +02:00
|
|
|
|
2011-07-26 00:28:22 +02:00
|
|
|
if(itr != nameList.end())
|
|
|
|
nameList.erase(itr);
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool CCategoryList::findCategory(const string &name)
|
|
|
|
{
|
2011-07-26 00:28:22 +02:00
|
|
|
for (listIter = nameList.begin(); listIter != nameList.end(); listIter++)
|
|
|
|
{
|
|
|
|
if(strcasecmp(name.c_str(), listIter->second.c_str()) == 0)
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
2011-06-03 22:31:09 +02:00
|
|
|
}
|