Beispiel #1
0
	/**
	 * Add data from database into list view.
	 */
	void CountriesListScreen::addDataToListView()
	{
		// Clear data from map.
		mCountryMap.clear();

		// Create first section.
		NativeUI::ListViewSection* section = NULL;
		MAUtil::String sectionTitle("A");

		// For each country read create and add an ListViewItem widget.
		int countCountries = mDatabase.countCountries();
		for (int index = 0; index < countCountries; index++)
		{
			// If index is invalid skip this country.
			Country* country = mDatabase.getCountryByIndex(index);
			if (!country)
			{
				continue;
			}

			// If country's name is an empty string skip this country.
			MAUtil::String countryName = country->getName();
			if (countryName.length() == 0)
			{
				continue;
			}

			// Check if current country can go into current section.
			if (!section || countryName[0] != sectionTitle[0])
			{
				// Create new section.
				sectionTitle[0] = countryName[0];
				section = new NativeUI::ListViewSection(
					NativeUI::LIST_VIEW_SECTION_TYPE_ALPHABETICAL);
				section->setTitle(sectionTitle);
				section->setHeaderText(sectionTitle);
				mListView->addChild(section);
			}

			// Create and add list item for this country.
			NativeUI::ListViewItem* item = new NativeUI::ListViewItem();
			item->setText(countryName);
			item->setFontColor(COLOR_WHITE);
			item->setSelectionStyle(NativeUI::LIST_VIEW_ITEM_SELECTION_STYLE_GRAY);
			item->setIcon(country->getFlagID());
			section->addItem(item);

			mCountryMap.insert(item->getWidgetHandle(), country->getID());
		}
	}
Beispiel #2
0
	/**
	 * Read a given country file.
	 * Data will be added into mCountries.
	 * @param countryFileName File name to read.
	 */
	void DatabaseManager::readCountryFile(MAUtil::String& countryFileName)
	{
		// Open and read file content.
		MAUtil::String filePath = mFileUtil->getLocalPath() + countryFileName;
		MAUtil::String fileContent;
		if (!mFileUtil->readTextFromFile(filePath, fileContent))
		{
			printf("Cannot read text from %s", filePath.c_str());
			return;
		}

		// Extract JSON values.
		MAUtil::YAJLDom::Value* root = MAUtil::YAJLDom::parse(
			(const unsigned char*)fileContent.c_str(), fileContent.size());
		MAUtil::String name = root->getValueForKey(sCountryNameKey)->toString();
		int flagID = root->getValueForKey(sCountryFlagIDKey)->toInt();
		MAUtil::String population = root->getValueForKey(sCountryPopulationKey)->toString();
		MAUtil::String area = root->getValueForKey(sCountryAreaKey)->toString();
		MAUtil::String languages = root->getValueForKey(sCountryLanguagesKey)->toString();
		MAUtil::String government = root->getValueForKey(sCountryGovernmentKey)->toString();
		MAUtil::String capital = root->getValueForKey(sCountryCapitalKey)->toString();

		// Create and fill Country object with read data.
		Country* country = new Country();
		country->setName(name);
		country->setFlagID(flagID);
		country->setPopulation(population);
		country->setArea(area);
		country->setLanguages(languages);
		country->setGovernment(government);
		country->setCapital(capital);

		// Add object to map and array.
		mCountriesMap.insert(country->getID(), country);
		mCountriesArray.add(country);

		// Delete JSON root object.
		delete root;
	}