Example #1
0
bool Ingridients::saveData(QString& fileName) {
    QJsonObject saveObj;
    QFile saveFile(fileName);

    PRINT_DEBUG("Saving all ingridients");

    if ( !saveFile.open(QIODevice::WriteOnly) ) {
        PRINT_WARN("Couldn't open save file.");

        return false;
    }

    saveItems(saveObj);
    saveFood(saveObj);
    saveDish(saveObj);

    QJsonDocument saveDoc(saveObj);

    if ( !fileName.right(5).compare(".json") ) {
        saveFile.write(saveDoc.toJson());
    } else {
        saveFile.write(saveDoc.toBinaryData());
    }

    return true;
}
void EditFood::saveFoodAndClear()
{
  if (saveFood()) {
    clearFood();
  }
}
void EditFood::saveFoodAndClose()
{
  if (saveFood()) {
    close();
  }
}
EditFood::EditFood(QWidget *parent, const QSharedPointer<SingleFood>& food)
    : QDialog(parent), food(food != NULL ? food : SingleFood::createNewFood())
{
  ui.setupUi(this);

  populateGroupSelector(ui.cboCategory);
  populateSourceSelector(ui.cboSource);
  populateUserSelector(ui.cboOwner);

  // TODO: Connect source and owner comboboxes when they are enabled

  populateUnitSelector(ui.cboWeightUnit, Unit::Dimensions::Weight);
  populateUnitSelector(ui.cboVolumeUnit, Unit::Dimensions::Volume);

  populateDimensionSelector(ui.cboNutrientDimensions);
  connect(ui.cboNutrientDimensions, SIGNAL(currentIndexChanged(int)),
          this, SLOT(basicNutrientsDimensionChanged(int)));

  populateDimensionSelector(ui.cboVitaminDimensions);
  connect(ui.cboVitaminDimensions, SIGNAL(currentIndexChanged(int)),
          this, SLOT(vitaminsDimensionChanged(int)));

  populateDimensionSelector(ui.cboMineralDimensions);
  connect(ui.cboMineralDimensions, SIGNAL(currentIndexChanged(int)),
          this, SLOT(mineralsDimensionChanged(int)));

  QWidget* tabWidget = ui.cboNutrientDimensions;

  tabWidget = populateNutrientGroup(ui.grpBasicNutrients, basicNutrients,
                                    Nutrient::Categories::Basic, tabWidget);

  QWidget::setTabOrder(tabWidget, ui.cboVitaminDimensions);
  tabWidget = ui.cboVitaminDimensions;

  tabWidget = populateNutrientGroup(ui.grpVitamins, vitamins,
                                    Nutrient::Categories::Vitamin, tabWidget);

  QWidget::setTabOrder(tabWidget, ui.cboMineralDimensions);
  tabWidget = ui.cboMineralDimensions;

  tabWidget = populateNutrientGroup(ui.grpMinerals, minerals,
                                    Nutrient::Categories::Mineral, tabWidget);

  QWidget::setTabOrder(tabWidget, ui.btnSaveAndClose);
  QWidget::setTabOrder(ui.btnSaveAndClose, ui.btnSaveAndAdd);
  QWidget::setTabOrder(ui.btnSaveAndAdd, ui.btnSave);
  QWidget::setTabOrder(ui.btnSave, ui.btnCancel);

  // Default Vitamin and Mineral dimensions to % RDI

  ui.cboVitaminDimensions->setCurrentIndex
  (ui.cboVitaminDimensions->findData
   (QVariant::fromValue(NutrientAmountDisplay::DisplayModes::RDI)));

  ui.cboMineralDimensions->setCurrentIndex
  (ui.cboMineralDimensions->findData
   (QVariant::fromValue(NutrientAmountDisplay::DisplayModes::RDI)));

  connect(ui.btnFillIn, SIGNAL(clicked()), this, SLOT(promptForFillIn()));

  connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(close()));
  connect(ui.btnSave, SIGNAL(clicked()), this, SLOT(saveFood()));
  connect(ui.btnSaveAndAdd, SIGNAL(clicked()), this, SLOT(saveFoodAndClear()));
  connect(ui.btnSaveAndClose, SIGNAL(clicked()), this, SLOT(saveFoodAndClose()));

  loadFoodInformation();

  QSettings settings("Nerdland", "Nutrition Tracker");
  settings.beginGroup("editfood");
  resize(settings.value("size", size()).toSize());
  if (!settings.value("position").isNull()) {
    move(settings.value("position", pos()).toPoint());
  }
  settings.endGroup();
}