BasicmLearningEditor::BasicmLearningEditor(TemplateCore *core, QWidget *parent)
  : TemplateEditor(core, parent), m_ui(new Ui::BasicmLearningEditor) {
  m_ui->setupUi(this);

  // Set validators.
  QRegExpValidator *author_validator = new QRegExpValidator(this);
  QRegExpValidator *title_validator = new QRegExpValidator(this);

  author_validator->setRegExp(QRegExp(".{,50}"));
  title_validator->setRegExp(QRegExp(".{,100}"));

  m_ui->m_txtAuthor->lineEdit()->setValidator(author_validator);
  m_ui->m_txtName->lineEdit()->setValidator(title_validator);

  // Set tab order.
  QList<QWidget*> tab_order_widgets;
  tab_order_widgets << m_ui->m_txtTitle->lineEdit() << m_ui->m_txtDescription <<
                       m_ui->m_txtAuthor->lineEdit() << m_ui->m_txtName->lineEdit() <<
                       m_ui->m_listItems << m_ui->m_btnItemAdd << m_ui->m_btnItemRemove <<
                       m_ui->m_btnItemUp << m_ui->m_btnItemDown;

  for (int i = 1; i < tab_order_widgets.size(); i++) {
    setTabOrder(tab_order_widgets.at(i - 1), tab_order_widgets.at(i));
  }


  m_ui->m_txtTitle->lineEdit()->setPlaceholderText(tr("Title of the item"));
  m_ui->m_txtNumberOfItems->lineEdit()->setEnabled(false);
  m_ui->m_txtAuthor->lineEdit()->setPlaceholderText(tr("Author of this collection"));
  m_ui->m_txtName->lineEdit()->setPlaceholderText(tr("Name of this collection"));

  IconFactory *factory = IconFactory::instance();

  m_ui->m_btnItemAdd->setIcon(factory->fromTheme("item-add"));
  m_ui->m_btnItemRemove->setIcon(factory->fromTheme("item-remove"));
  m_ui->m_btnItemUp->setIcon(factory->fromTheme("move-up"));
  m_ui->m_btnItemDown->setIcon(factory->fromTheme("move-down"));

  connect(m_ui->m_txtTitle->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(checkTitle(QString)));
  connect(m_ui->m_btnItemAdd, SIGNAL(clicked()), this, SLOT(addNewItem()));
  connect(m_ui->m_btnItemRemove, SIGNAL(clicked()), this, SLOT(removeSelectedItem()));
  connect(m_ui->m_txtDescription, SIGNAL(textChanged()), this, SLOT(saveItem()));
  connect(m_ui->m_txtTitle->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(saveItem()));
  connect(m_ui->m_listItems, SIGNAL(currentRowChanged(int)), this, SLOT(displayItem(int)));
  connect(m_ui->m_btnItemUp, SIGNAL(clicked()), this, SLOT(moveItemUp()));
  connect(m_ui->m_btnItemDown, SIGNAL(clicked()), this, SLOT(moveItemDown()));
  connect(m_ui->m_txtAuthor->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(onAuthorChanged(QString)));
  connect(m_ui->m_txtName->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(onNameChanged(QString)));

  checkTitle(m_ui->m_txtTitle->lineEdit()->text());
  checkAuthor();
  checkName();
  setEditorsEnabled(false);
  updateItemCount();
}
Example #2
0
void Configurator::currentItemChanged( QListWidgetItem* current, QListWidgetItem* previous )
{
	_currentWigetItem = current;
	
	saveItem( previous );
	loadItem( current );
}
bool IOMapSerialize::saveTile(PropWriteStream& stream, const Tile* tile)
{
	int32_t tileCount = tile->getThingCount();
	if(!tileCount)
		return true;

	std::vector<Item*> items;
	Item* item = NULL;
	for(; tileCount > 0; --tileCount)
	{
		if((item = tile->__getThing(tileCount - 1)->getItem()) &&
			(item->isMoveable() || item->forceSerialize()))
			items.push_back(item);
	}

	tileCount = items.size(); //lame, but at least we don't need a new variable
	if(tileCount > 0)
	{
		stream.ADD_USHORT(tile->getPosition().x);
		stream.ADD_USHORT(tile->getPosition().y);
		stream.ADD_UCHAR(tile->getPosition().z);

		stream.ADD_ULONG(tileCount);
		for(std::vector<Item*>::iterator it = items.begin(); it != items.end(); ++it)
			saveItem(stream, (*it));
	}

	return true;
}
void IOMapSerialize::saveTile(PropWriteStream& stream, const Tile* tile)
{
	const Position& tilePosition = tile->getPosition();
	if (tilePosition.x == 0 || tilePosition.y == 0) {
		return;
	}

	std::vector<Item*> items;

	if (const TileItemVector* tileItems = tile->getItemList()) {
		for (ItemVector::const_reverse_iterator it = tileItems->rbegin(), rend = tileItems->rend(); it != rend; ++it) {
			Item* item = (*it);

			// Note that these are NEGATED, ie. these are the items that will be saved.
			if (!(!item->isNotMoveable() || item->getDoor() || (item->getContainer() && !item->getContainer()->empty()) || item->canWriteText() || item->getBed())) {
				continue;
			}

			items.push_back(item);
		}
	}

	if (!items.empty()) {
		stream.ADD_USHORT(tilePosition.x);
		stream.ADD_USHORT(tilePosition.y);
		stream.ADD_UCHAR(tilePosition.z);

		stream.ADD_ULONG(items.size());
		for (const Item* item : items) {
			saveItem(stream, item);
		}
	}
}
void IOMapSerialize::saveTile(PropWriteStream& stream, const Tile* tile)
{
	const TileItemVector* tileItems = tile->getItemList();
	if (!tileItems) {
		return;
	}

	std::forward_list<Item*> items;
	uint16_t count = 0;
	for (Item* item : *tileItems) {
		const ItemType& it = Item::items[item->getID()];

		// Note that these are NEGATED, ie. these are the items that will be saved.
		if (!(it.moveable || item->getDoor() || (item->getContainer() && !item->getContainer()->empty()) || it.canWriteText || item->getBed())) {
			continue;
		}

		items.push_front(item);
		++count;
	}

	if (!items.empty()) {
		const Position& tilePosition = tile->getPosition();
		stream.write<uint16_t>(tilePosition.x);
		stream.write<uint16_t>(tilePosition.y);
		stream.write<uint8_t>(tilePosition.z);

		stream.write<uint32_t>(count);
		for (const Item* item : items) {
			saveItem(stream, item);
		}
	}
}
bool IOMapSerialize::saveTile(PropWriteStream& stream, const Tile* tile)
{
	int32_t tileCount = tile->getThingCount();
	if(!tileCount)
		return true;

	std::vector<Item*> items;
	Item* item = NULL;
	for(; tileCount > 0; --tileCount)
	{
		if((item = tile->__getThing(tileCount - 1)->getItem()) && // CHECKME: wouldn't it be better to use TileItemVector in here?
			(item->isMovable() || item->forceSerialize()))
			items.push_back(item);
	}

	tileCount = items.size(); //lame, but at least we don't need a new variable
	if(tileCount > 0)
	{
		stream.addShort(tile->getPosition().x);
		stream.addShort(tile->getPosition().y);
		stream.addByte(tile->getPosition().z);

		stream.addLong(tileCount);
		for(std::vector<Item*>::iterator it = items.begin(); it != items.end(); ++it)
			saveItem(stream, (*it));
	}

	return true;
}
void BtBookmarkLoader::saveItem(QTreeWidgetItem* item, QDomElement& parentElement)
{
	BtBookmarkFolder* folderItem = 0;
	BtBookmarkItem* bookmarkItem = 0;

	if ((folderItem = dynamic_cast<BtBookmarkFolder*>(item))) {
		QDomElement elem = parentElement.ownerDocument().createElement("Folder");
		elem.setAttribute("caption", folderItem->text(0));

		parentElement.appendChild(elem);

		for (int i = 0; i < folderItem->childCount(); i++) {
			saveItem(folderItem->child(i), elem);
		}
	}
	else if ((bookmarkItem = dynamic_cast<BtBookmarkItem*>(item))) {
		QDomElement elem = parentElement.ownerDocument().createElement("Bookmark");

		elem.setAttribute("key", bookmarkItem->englishKey());
		elem.setAttribute("description", bookmarkItem->description());
		elem.setAttribute("modulename", bookmarkItem->m_moduleName);
		elem.setAttribute("moduledescription", bookmarkItem->module() ? bookmarkItem->module()->config(CSwordModuleInfo::Description) : QString::null);

		parentElement.appendChild(elem);
	}
}
int MainWindowImpl::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QMainWindow::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: frameSignal(); break;
        case 1: resetTxSignal(); break;
        case 2: showDialog(); break;
        case 3: deleteItem(); break;
        case 4: uploadItem(); break;
        case 5: saveItem(); break;
        case 6: setPathDialog(); break;
        case 7: startAnimation(); break;
        case 8: setanimationtime(); break;
        case 9: animationFinished(); break;
        case 10: showAddCursorDialog(); break;
        case 11: showAddEllipseDialog(); break;
        case 12: animationslidertime((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 13: opacitySliderImpl((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 14: showConfigureDialog(); break;
        case 15: startTx(); break;
        case 16: restartPacketTimer(); break;
        case 17: resetTx(); break;
        case 18: showDebugWindow(); break;
        case 19: showAboutQMTSim(); break;
        case 20: showReadme(); break;
        case 21: viewButtonSlot(); break;
        case 22: showResizeDialog(); break;
        }
        _id -= 23;
    }
    return _id;
}
Example #9
0
void
PromoBatchMaster::slotLabels()
{
    if (!saveItem(true)) return;
    dataToWidget();

    LabelBatch batch;
    batch.setNumber("#");
    batch.setDescription(tr("From promo batch #%1").arg(_curr.number()));
    batch.setStoreId(_curr.storeId());

    for (unsigned int i = 0; i < _curr.items().size(); ++i) {
        const PromoBatchItem& line1 = _curr.items()[i];
        if (line1.item_id == INVALID_ID) continue;

        LabelBatchItem line2;
        line2.item_id = line1.item_id;
        line2.number = line1.number;
        line2.size = line1.size;
        line2.price = line1.price;
        line2.count = 1;
        batch.items().push_back(line2);
    }

    if (_db->create(batch)) {
        QString message = tr("Created label batch #%1").arg(batch.number());
        QMessageBox::information(this, tr("Information"), message);
    } else {
        QString message = tr("Error creating label batch");
        QMessageBox::critical(this, tr("Error"), message);
    }
}
Example #10
0
void DishInfoDialog::slt_save()
{
    if (!this->checkResult())
        return;

    if (saveItem())
        this->close();
}
Example #11
0
void
GeneralMaster::slotRecurring()
{
    if (!saveItem(true)) return;

    RecurringMaster* screen = new RecurringMaster(_main);
    screen->setGltx(_curr.id());
    screen->show();
}
Example #12
0
void DishInfoDialog::slt_apply()
{
    if (!this->checkResult())
        return;

    if (saveItem())
    {
        this->setMenuItem(_menuItem);
    }
}
Example #13
0
void
CustomerMaster::slotEmail()
{
    if (!saveItem(true)) return;

    Company company;
    _quasar->db()->lookup(company);

    SendEmail* email = new SendEmail(_main);
    email->setCard(_curr.id());
    email->show();
}
bool IOMapSerialize::saveItem(PropWriteStream& stream, const Item* item)
{
	stream.addShort(item->getID());
	item->serializeAttr(stream);
	if(const Container* container = item->getContainer())
	{
		stream.addByte(ATTR_CONTAINER_ITEMS);
		stream.addLong(container->size());
		for(ItemList::const_reverse_iterator rit = container->getReversedItems(); rit != container->getReversedEnd(); ++rit)
			saveItem(stream, (*rit));
	}

	stream.addByte(ATTR_END);
	return true;
}
Example #15
0
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
// handlers for controls
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
void Configurator::currentChanged( int index )
{
	// saving data for the previous section
	if( _configOptions->children().count() && _currentWigetItem )
	{
		saveItem( _currentWigetItem );
		_currentWigetItem->listWidget()->setCurrentRow( -1 );
	}
	
	// find the new section and set current item to first
	QListWidget* listWidget = qobject_cast<QListWidget*>( _sections->widget(index) );
	if( 0 == listWidget )
		return;

	listWidget->setCurrentRow( 0 );
}
Example #16
0
void
RecurringMaster::slotPost()
{
    if (!saveItem(true)) return;

    Gltx gltx;
    if (!_quasar->db()->lookup(_curr.gltxId(), gltx)) {
	QMessageBox::critical(this, tr("Error"), tr("Can't read transaction"));
	return;
    }

    QDate nextDue = _curr.nextDue();
    if (nextDue > QDate::currentDate()) {
	QString message = tr("The next due date is in the future\n"
			     "so this will post a future transaction.\n"
			     "Are you sure you want to do this?");
	int choice = QMessageBox::warning(this, tr("Warning"), message,
					  tr("Yes"), tr("No"));
	if (choice != 0) return;
    }

    if (_curr.cardGroup() != INVALID_ID) {
        CardSelect conditions;
	conditions.group_id = _curr.cardGroup();
	vector<Card> cards;
	_quasar->db()->select(cards, conditions);
	for (unsigned int i = 0; i < cards.size(); ++i)
	    if (!postOne(gltx, cards[i].id()))
	        return;
    } else {
        if (!postOne(gltx, gltx.cardId()))
	    return;
    }

    int postingCnt = _curr.postingCount();
    int maxPostings = _curr.maxPostings();

    Recurring old = _curr;
    _curr.setLastPosted(nextDue);
    _curr.setPostingCount(++postingCnt);
    if (maxPostings > 0 && postingCnt >= maxPostings)
	_quasar->db()->setActive(_curr, false);
    _quasar->db()->update(old, _curr);

    _id = _curr.id();
    startEdit();
}
void IOMapSerialize::saveItem(PropWriteStream& stream, const Item* item)
{
	const Container* container = item->getContainer();

	// Write ID & props
	stream.write<uint16_t>(item->getID());
	item->serializeAttr(stream);

	if (container) {
		// Hack our way into the attributes
		stream.write<uint8_t>(ATTR_CONTAINER_ITEMS);
		stream.write<uint32_t>(container->size());
		for (auto it = container->getReversedItems(), end = container->getReversedEnd(); it != end; ++it) {
			saveItem(stream, *it);
		}
	}

	stream.write<uint8_t>(0x00); // attr end
}
void IOMapSerialize::saveItem(PropWriteStream& stream, const Item* item)
{
	const Container* container = item->getContainer();

	// Write ID & props
	stream.ADD_USHORT(item->getID());
	item->serializeAttr(stream);

	if (container) {
		// Hack our way into the attributes
		stream.ADD_UCHAR(ATTR_CONTAINER_ITEMS);
		stream.ADD_ULONG(container->size());

		for (ItemDeque::const_reverse_iterator it = container->getReversedItems(), end = container->getReversedEnd(); it != end; ++it) {
			saveItem(stream, *it);
		}
	}

	stream.ADD_UCHAR(0x00); // attr end
}
Example #19
0
docItem::docItem(QList<int> _list, int _curr, int _doc, QWidget *parent):QDialog(parent){
    ui.setupUi(this);
    list = _list;
    curr = _curr;
    doc = _doc;

    QSqlQuery _v(QString("select docs.vid from docs where docs.id = \'%1\'").arg(doc));
    _v.next();
    vid = _v.value(0).toInt();

    ui.spinBox_id_book->hide();
    ui.tableWidget_res->setColumnHidden(0, true);    
    ui.tableWidget_res->setColumnHidden(7, true);
    ui.tableWidget_res->setColumnHidden(8, true);

    if (vid == 1){
        ui.tableWidget_res->setColumnHidden(6, true);
        ui.radioButton_identifier->hide();
    } else if (vid == 2){
        ui.lineEdit_place->hide();
        ui.label_3->hide();
        ui.lineEdit_identifier->setReadOnly(true);
    }

    openItem();

    readSetting();
    connect(ui.pushButton_close, SIGNAL(clicked()), this, SLOT(close()));
    connect(ui.lineEdit_search, SIGNAL(textEdited(QString)), this, SLOT(searchBook(QString)));
    connect(ui.tableWidget_res, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectBook()));

    connect(ui.pushButton_save, SIGNAL(clicked()), this, SLOT(saveItem()));
    connect(ui.pushButton_del, SIGNAL(clicked()), this, SLOT(deleteItem()));

    connect(ui.pushButton_toFirst, SIGNAL(clicked()), this, SLOT(toFirst()));
    connect(ui.pushButton_toLast, SIGNAL(clicked()), this, SLOT(toLast()));
    connect(ui.pushButton_toNext, SIGNAL(clicked()), this, SLOT(toNext()));
    connect(ui.pushButton_toPrev, SIGNAL(clicked()), this, SLOT(toPrev()));

}
void BtBookmarkLoader::saveTreeFromRootItem(QTreeWidgetItem* rootItem, QString fileName, bool forceOverwrite)
{
	Q_ASSERT(rootItem);
	if (fileName.isNull()) {
		fileName = util::filesystem::DirectoryUtil::getUserBaseDir().absolutePath() + "/bookmarks.xml";
	}

	QDomDocument doc("DOC");
	doc.appendChild( doc.createProcessingInstruction( "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) );

	QDomElement content = doc.createElement("SwordBookmarks");
	content.setAttribute("syntaxVersion", CURRENT_SYNTAX_VERSION);
	doc.appendChild(content);

	//append the XML nodes of all child items

	for (int i = 0; i < rootItem->childCount(); i++) {
		saveItem(rootItem->child(i), content);
	}
	CToolClass::savePlainFile(fileName, doc.toString(), forceOverwrite, QTextCodec::codecForName("UTF-8"));

}
Example #21
0
void Configurator::saveSettings()
{
    QListWidget* listWidget = qobject_cast<QListWidget*>( _sections->currentWidget() );
	if( 0 != listWidget )
		saveItem( listWidget->currentItem() );

	// cheking if we can open file for writing
	QFile configurationFile( _configurationFileName );
	if( false == configurationFile.open(QIODevice::WriteOnly) )
		return;

	// saving content
	QTextStream textStream( &configurationFile );

	_domDocument.save( textStream, 4 );

	configurationFile.close();

	emit configurationChanged();

	accept();
}
Example #22
0
void
PromoBatchMaster::slotPrint()
{
    if (!saveItem(true)) return;
    dataToWidget();

    // Setup grid for printing
    Grid* grid = new Grid(6);
    Grid* header = new Grid(1, grid);
    TextFrame* text;
    text = new TextFrame(tr("Promotion Batch"), header);
    text->setJustify(ALIGN_CENTER);
    text->setFont(Font("Times", 24, 75));
    header->set(USE_NEXT, 0, text);
    if (_curr.executedOn().isNull()) {
        text = new TextFrame(tr("Preliminary"), header);
    } else {
        QString dateText = DateValcon().format(_curr.executedOn());
        text = new TextFrame(tr("Executed On: %1").arg(dateText), header);
    }
    text->setJustify(ALIGN_CENTER);
    text->setFont(Font("Times", 18));
    header->set(USE_NEXT, 0, text);
    header->setColumnWeight(0, 1);

    grid->set(0, 0, 1, grid->columns(), header, Grid::AllSides);
    grid->set(USE_NEXT, 0, "");
    for (int column = 0; column < 6; ++column) {
        grid->setColumnSticky(column, column < 3 ? Grid::Left : Grid::Right);
        grid->setColumnPad(column, 5);
    }
    grid->set(2, 0, tr("Item Number"));
    grid->set(3, 0, new LineFrame(grid), Grid::LeftRight);
    grid->set(2, 1, tr("Description"));
    grid->set(3, 1, new LineFrame(grid), Grid::LeftRight);
    grid->set(2, 2, tr("Size"));
    grid->set(3, 2, new LineFrame(grid), Grid::LeftRight);
    grid->set(2, 3, tr("Current Price"));
    grid->set(3, 3, new LineFrame(grid), Grid::LeftRight);
    grid->set(2, 4, tr("Promo Price"));
    grid->set(3, 4, new LineFrame(grid), Grid::LeftRight);
    grid->set(2, 5, tr("Ordered"));
    grid->set(3, 5, new LineFrame(grid), Grid::LeftRight);
    grid->setHeaderRows(grid->rows());

    // Setup progress dialog
    QProgressDialog* progress = new QProgressDialog(tr("Printing promos..."),
            tr("Cancel"),
            _curr.items().size(),
            this, "Progress", true);
    progress->setMinimumDuration(1000);
    progress->setCaption(tr("Progress"));

    // Print promos
    for (unsigned int i = 0; i < _curr.items().size(); ++i) {
        progress->setProgress(i);
        qApp->processEvents();
        if (progress->wasCancelled()) break;

        Id item_id = _curr.items()[i].item_id;
        if (item_id == INVALID_ID) continue;

        QString number = _curr.items()[i].number;
        QString size = _curr.items()[i].size;
        Price promoPrice = _curr.items()[i].price;
        fixed ordered = _curr.items()[i].ordered;

        Item item;
        findItem(item_id, item);

        Price currentPrice = item.price(_store->getId(), size);

        grid->set(USE_NEXT, 0, number);
        grid->set(USE_CURR, 1, item.description());
        grid->set(USE_CURR, 2, size);
        grid->set(USE_CURR, 3, currentPrice.toString());
        grid->set(USE_CURR, 4, promoPrice.toString());
        grid->set(USE_CURR, 5, ordered.toString());
    }
    bool cancelled = progress->wasCancelled();
    progress->setProgress(_curr.items().size());
    delete progress;

    if (!cancelled) grid->print(this);
    delete grid;
}
Example #23
0
void MaMainWindow::onShuttingDown()
{
    saveItem(curItem());
}
Example #24
0
tristate KexiWindow::switchToViewMode(
    Kexi::ViewMode newViewMode,
    QMap<QString, QVariant>* staticObjectArgs,
    bool& proposeOpeningInTextViewModeBecauseOfProblems)
{
    KexiMainWindowIface::global()->acceptPropertySetEditing();

    const bool designModePreloadedForTextModeHack = isDesignModePreloadedForTextModeHackUsed(newViewMode);
    tristate res = true;
    if (designModePreloadedForTextModeHack) {
        /* A HACK: open design BEFORE text mode: otherwise Query schema becames crazy */
        bool _proposeOpeningInTextViewModeBecauseOfProblems = false; // used because even if opening the view failed,
        // text view can be opened
        res = switchToViewMode(Kexi::DesignViewMode, staticObjectArgs, _proposeOpeningInTextViewModeBecauseOfProblems);
        if ((!res && !_proposeOpeningInTextViewModeBecauseOfProblems) || ~res)
            return res;
    }

    kDebug();
    bool dontStore = false;
    KexiView *view = selectedView();

    if (d->currentViewMode == newViewMode)
        return true;
    if (!supportsViewMode(newViewMode)) {
        kWarning() << "!" << Kexi::nameForViewMode(newViewMode);
        return false;
    }

    if (view) {
        res = true;
        if (view->isDataEditingInProgress()) {
            KGuiItem saveItem(KStandardGuiItem::save());
            saveItem.setText(i18n("Save Changes"));
            KGuiItem dontSaveItem(KStandardGuiItem::dontSave());
            KGuiItem cancelItem(KStandardGuiItem::cancel());
            cancelItem.setText(i18n("Do Not Switch"));
            const int res = KMessageBox::questionYesNoCancel(
                selectedView(),
                i18n("There are unsaved changes in object \"%1\". "
                     "Do you want to save these changes before switching to other view?")
                    .arg(partItem()->captionOrName()),
                    i18n("Confirm Saving Changes"),
                    saveItem, dontSaveItem, cancelItem
            );
            if (res == KMessageBox::Yes) {
                if (true != view->saveDataChanges())
                    return cancelled;
            }
            else if (res == KMessageBox::No) {
                if (true != view->cancelDataChanges())
                    return cancelled;
            }
            else { // Cancel:
                return cancelled;
            }
        }
        if (!designModePreloadedForTextModeHack) {
            res = view->beforeSwitchTo(newViewMode, dontStore);
        }
        if (~res || !res)
            return res;
        if (!dontStore && view->isDirty()) {
            res = KexiMainWindowIface::global()->saveObject(this, i18n("Design has been changed. "
                    "You must save it before switching to other view."));
            if (~res || !res)
                return res;
//   KMessageBox::questionYesNo(0, i18n("Design has been changed. You must save it before switching to other view."))
//    ==KMessageBox::No
        }
    }

    //get view for viewMode
    KexiView *newView = viewForMode(newViewMode);
    if (newView && !newView->inherits("KexiView")) {
        newView = 0;
    }
    if (!newView) {
        KexiUtils::setWaitCursor();
        //ask the part to create view for the new mode
        d->creatingViewsMode = newViewMode;
        KexiPart::StaticPart *staticPart = dynamic_cast<KexiPart::StaticPart*>((KexiPart::Part*)d->part);
        if (staticPart)
            newView = staticPart->createView(this, this, *d->item, newViewMode, staticObjectArgs);
        else
            newView = d->part->createView(this, this, *d->item, newViewMode, staticObjectArgs);
        KexiUtils::removeWaitCursor();
        if (!newView) {
            //js TODO error?
            kWarning() << "Switching to mode " << newViewMode << " failed. Previous mode "
            << d->currentViewMode << " restored.";
            return false;
        }
        d->creatingViewsMode = Kexi::NoViewMode;
        newView->initViewActions();
        newView->initMainMenuActions();
        addView(newView, newViewMode);
    }
    const Kexi::ViewMode prevViewMode = d->currentViewMode;
    res = true;
    if (designModePreloadedForTextModeHack) {
        d->currentViewMode = Kexi::NoViewMode; //SAFE?
    }
    res = newView->beforeSwitchTo(newViewMode, dontStore);
    proposeOpeningInTextViewModeBecauseOfProblems
        = data()->proposeOpeningInTextViewModeBecauseOfProblems;
    if (!res) {
        removeView(newViewMode);
        delete newView;
        kWarning() << "Switching to mode " << newViewMode << " failed. Previous mode "
        << d->currentViewMode << " restored.";
        return false;
    }
    d->currentViewMode = newViewMode;
    d->newlySelectedView = newView;
    if (prevViewMode == Kexi::NoViewMode)
        d->newlySelectedView->setDirty(false);

    res = newView->afterSwitchFrom(
              designModePreloadedForTextModeHack ? Kexi::NoViewMode : prevViewMode);
    proposeOpeningInTextViewModeBecauseOfProblems
        = data()->proposeOpeningInTextViewModeBecauseOfProblems;
    if (!res) {
        removeView(newViewMode);
        delete newView;
        kWarning() << "Switching to mode " << newViewMode << " failed. Previous mode "
        << prevViewMode << " restored.";
        const Kexi::ObjectStatus status(*this);
        setStatus(KexiMainWindowIface::global()->project()->dbConnection(),
                  i18n("Switching to other view failed (%1).", Kexi::nameForViewMode(newViewMode)), "");
        append(status);
        d->currentViewMode = prevViewMode;
        return false;
    }
    d->newlySelectedView = 0;
    if (~res) {
        d->currentViewMode = prevViewMode;
        return cancelled;
    }
    if (view) {
        takeActionProxyChild(view);   //take current proxy child
        // views have distinct local toolbars, and user has switched the mode button so switch it back
        //view->toggleViewModeButtonBack();
    }
    addActionProxyChild(newView);   //new proxy child
    d->stack->setCurrentWidget(newView);
    newView->propertySetSwitched();
    KexiMainWindowIface::global()->invalidateSharedActions(newView);
    newView->setFocus();
    return true;
}
Example #25
0
void MangaW::itemList(void)
{
	SubWin = new MangaSubW(0, CurrentItem->text(0), T.vlist(CurrentItem->text(0)));
	QWidget * WidWid = SubWin->widget();
	connect(WidWid, SIGNAL(destroyed()), this, SLOT(saveItem()));
}
Example #26
0
void
PromoBatchMaster::slotExecute()
{
    Id store_id = _store->getId();
    if (store_id == INVALID_ID) {
        qApp->beep();
        QMessageBox::critical(this, tr("Error"), tr("A store is required"));
        _store->setFocus();
        return;
    }

    QDate oldDate = _execDate->getDate();
    if (!oldDate.isNull()) {
        qApp->beep();
        QMessageBox::critical(this, tr("Error"), tr("Already executed"));
        return;
    }

    QString message = tr("Are you sure you want to execute this batch?");
    int ch = QMessageBox::warning(this, tr("Continue?"), message,
                                  QMessageBox::No, QMessageBox::Yes);
    if (ch != QMessageBox::Yes) return;

    _execDate->setDate(QDate::currentDate());
    QDate fromDate = _fromDate->getDate();
    QDate toDate = _toDate->getDate();

    QApplication::setOverrideCursor(waitCursor);
    qApp->processEvents();

    // Create ItemPrice
    for (int row = 0; row < _items->rows(); ++row) {
        Id item_id = _items->cellValue(row, 0).toId();
        if (item_id == INVALID_ID) continue;

        QString number = _items->cellValue(row, 0).toPlu().number();
        QString size = _items->cellValue(row, 2).toString();
        Price price = _items->cellValue(row, 4).toPrice();

        Item item;
        findItem(item_id, item);

        ItemPrice info;
        info.setIsCost(false);
        info.setItemId(item_id);
        info.setNumber(number);
        info.setSize(size);
        info.setStoreId(store_id);
        info.setPromotion(true);
        info.setDiscountable(item.isDiscountable());
        info.setStartDate(fromDate);
        info.setStopDate(toDate);
        info.setMethod(ItemPrice::PRICE);
        info.setPrice(price);
        _db->create(info);

        _items->row(row)->setValue(6, info.id());
    }

    saveItem(false);
    dataToWidget();

    QApplication::restoreOverrideCursor();
    qApp->beep();

    message = tr("Do you wish to print out the price\n"
                 "changes that were done?");
    ch = QMessageBox::information(this, tr("Print"), message,
                                  QMessageBox::No, QMessageBox::Yes);
    if (ch == QMessageBox::Yes)
        slotPrint();

    message = tr("Do you wish to create labels for the\n"
                 "changes that were done?");
    ch = QMessageBox::information(this, tr("Labels"), message,
                                  QMessageBox::No, QMessageBox::Yes);
    if (ch == QMessageBox::Yes)
        slotLabels();

    QMessageBox::information(this, tr("Complete"),
                             tr("Promotion batch executed"));
    close();
}