Git commit 419c6fe7a806a36dd6c98a507edcc2218cce234d by Stephane Mankowski. Committed on 31/12/2011 at 23:10. Pushed by smankowski into branch 'Feature'. BUG: Fast edition refreshs the "comment" field BUG: The autocompletion list for number displays only the numbers of the se= lected account Correction in automatic tests M +2 -0 CHANGELOG M +0 -5 TODO M +43 -41 plugins/generic/skg_bookmark/skgbookmarkplugindockwidget.cpp M +14 -4 plugins/skrooge/skrooge_operation/skgoperationpluginwidget.c= pp M +1 -1 skgbankmodeler/skgcategoryobject.cpp M +2 -2 skgbankmodeler/skgdocumentbank.cpp M +3 -0 skgbasegui/skgmainpanel.cpp M +8 -0 tests/scripts/init.sh.in D +- -- tests/sikuli/shared.sikuli/Dcnotsave.png M +0 -1 tests/sikuli/shared.sikuli/shared.py http://commits.kde.org/skrooge/419c6fe7a806a36dd6c98a507edcc2218cce234d diff --git a/CHANGELOG b/CHANGELOG index ec58c57..12d487b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,8 @@ skrooge (1.2.0) *Correction: In operations tab, provide a "show" menu as for other plugi= ns *Correction: Avoid duplication of some categories when search and proces= s is used = *Correction: Avoid modifications in interest table = + *Correction: Fast edition refreshs the "comment" field = + *Correction: The autocompletion list for number displays only the number= s of the selected account = *New feature: Fields of update part of the search & process panel are no= t editable to facilitate the completion *New feature: Import of non local files (example: http://myserver/docume= nt.qif) *New feature: Export of non local files (example: http://myserver/docume= nt.qif) diff --git a/TODO b/TODO index 6aec179..a158e01 100644 --- a/TODO +++ b/TODO @@ -100,11 +100,6 @@ and visually appealing in many cases, not only in budg= et tables (e.g. dashboard widget named income and expenditure), to have a progress bar ins= ide = a table. = -There is one unexpected issue: create a template of operation by using the = -most recent case of it, then CHANGE amount of template and schedule it. Re= sult = -in the dashboard widget "Advices": "scheduled operation "07/12/2011 ABC -1= 00 = -is not uptodate".What is not up to date, the corrected amount?:-) - 092:P1:Propri=C3=A9t=C3=A9 "execute after import" sur chaque r=C3=A8gle de= type "process" au lieu d'un setting = 093:P1:More periods in budgets (week, 3 months, ...) diff --git a/plugins/generic/skg_bookmark/skgbookmarkplugindockwidget.cpp b= /plugins/generic/skg_bookmark/skgbookmarkplugindockwidget.cpp index b8a99ba..44c094b 100644 --- a/plugins/generic/skg_bookmark/skgbookmarkplugindockwidget.cpp +++ b/plugins/generic/skg_bookmark/skgbookmarkplugindockwidget.cpp @@ -58,47 +58,6 @@ SKGBookmarkPluginDockWidget::SKGBookmarkPluginDockWidget= (SKGDocument* iDocument) ui.kBookmarksList->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui.kBookmarksList, SIGNAL(customContextMenuRequested(QPoint)),= this, SLOT(showMenu(QPoint))); = - m_mainMenu =3D new KMenu(ui.kBookmarksList); - QAction* actExpandAll =3D m_mainMenu->addAction(KIcon("format-indent-m= ore"), i18nc("Noun, user action", "Expand all")); - connect(actExpandAll, SIGNAL(triggered(bool)), ui.kBookmarksList, SLOT= (expandAll())); - - QAction* actCollapseAll =3D m_mainMenu->addAction(KIcon("format-indent= -less"), i18nc("Noun, user action", "Collapse all")); - connect(actCollapseAll, SIGNAL(triggered(bool)), ui.kBookmarksList, SL= OT(collapseAll())); - ui.kBookmarksList->insertAction(0, actCollapseAll); - - m_mainMenu->addSeparator(); - - m_actAddBookmark =3D m_mainMenu->addAction(KIcon("list-add"), i18nc("V= erb", "Bookmark current page")); - connect(m_actAddBookmark, SIGNAL(triggered(bool)), this, SLOT(onAddBoo= kmark())); - - m_actAddBookmarks =3D m_mainMenu->addAction(KIcon("list-add"), i18nc("= Verb", "Bookmark all pages")); - connect(m_actAddBookmarks, SIGNAL(triggered(bool)), this, SLOT(onAddBo= okmarks())); - - m_actAddBookmarkGroup =3D m_mainMenu->addAction(KIcon("folder-new"), i= 18nc("Verb", "Add bookmark group")); - connect(m_actAddBookmarkGroup, SIGNAL(triggered(bool)), this, SLOT(onA= ddBookmarkGroup())); - - m_mainMenu->addSeparator(); - - m_actDelete =3D m_mainMenu->addAction(KIcon("edit-delete"), i18nc("Ver= b, delete an item", "Delete")); - connect(m_actDelete, SIGNAL(triggered(bool)), this, SLOT(onRemoveBookm= ark())); - - m_mainMenu->addSeparator(); - - m_actSetAutostart =3D m_mainMenu->addAction(KIcon("user-online"), i18n= c("Verb, automatically load when the application is started", "Autostart")); - connect(m_actSetAutostart, SIGNAL(triggered(bool)), this, SLOT(onSetAu= tostart())); - - m_actUnsetAutostart =3D m_mainMenu->addAction(KIcon("user-offline"), i= 18nc("Verb", "Remove Autostart")); - connect(m_actUnsetAutostart, SIGNAL(triggered(bool)), this, SLOT(onUns= etAutostart())); - - m_actRename =3D m_mainMenu->addAction(KIcon("edit-rename"), i18nc("Ver= b, change the name of an item", "Rename")); - connect(m_actRename, SIGNAL(triggered(bool)), this, SLOT(onRenameBookm= ark())); - - m_actChangeIcon =3D m_mainMenu->addAction(KIcon("view-media-visualizat= ion"), i18nc("Verb, change the icon of an item", "Change icon...")); - connect(m_actChangeIcon, SIGNAL(triggered(bool)), this, SLOT(onChangeI= conBookmark())); - - m_mainMenu->addSeparator(); - m_mainMenu->addAction(SKGMainPanel::getMainPanel()->getGlobalAction("t= ab_overwritebookmark")); - //Add model m_modelview =3D new SKGObjectModelBase(getDocument(), "v_node", "1=3D1= ORDER BY f_sortorder, t_name", this, "rd_node_id"); SKGSortFilterProxyModel* modelproxy =3D new SKGSortFilterProxyModel(th= is); @@ -141,6 +100,49 @@ QWidget* SKGBookmarkPluginDockWidget::mainWidget() con= st = void SKGBookmarkPluginDockWidget::showMenu(const QPoint& pos) { + if (!m_mainMenu) { + m_mainMenu =3D new KMenu(ui.kBookmarksList); + QAction* actExpandAll =3D m_mainMenu->addAction(KIcon("format-inde= nt-more"), i18nc("Noun, user action", "Expand all")); + connect(actExpandAll, SIGNAL(triggered(bool)), ui.kBookmarksList, = SLOT(expandAll())); + + QAction* actCollapseAll =3D m_mainMenu->addAction(KIcon("format-in= dent-less"), i18nc("Noun, user action", "Collapse all")); + connect(actCollapseAll, SIGNAL(triggered(bool)), ui.kBookmarksList= , SLOT(collapseAll())); + ui.kBookmarksList->insertAction(0, actCollapseAll); + + m_mainMenu->addSeparator(); + + m_actAddBookmark =3D m_mainMenu->addAction(KIcon("list-add"), i18n= c("Verb", "Bookmark current page")); + connect(m_actAddBookmark, SIGNAL(triggered(bool)), this, SLOT(onAd= dBookmark())); + + m_actAddBookmarks =3D m_mainMenu->addAction(KIcon("list-add"), i18= nc("Verb", "Bookmark all pages")); + connect(m_actAddBookmarks, SIGNAL(triggered(bool)), this, SLOT(onA= ddBookmarks())); + + m_actAddBookmarkGroup =3D m_mainMenu->addAction(KIcon("folder-new"= ), i18nc("Verb", "Add bookmark group")); + connect(m_actAddBookmarkGroup, SIGNAL(triggered(bool)), this, SLOT= (onAddBookmarkGroup())); + + m_mainMenu->addSeparator(); + + m_actDelete =3D m_mainMenu->addAction(KIcon("edit-delete"), i18nc(= "Verb, delete an item", "Delete")); + connect(m_actDelete, SIGNAL(triggered(bool)), this, SLOT(onRemoveB= ookmark())); + + m_mainMenu->addSeparator(); + + m_actSetAutostart =3D m_mainMenu->addAction(KIcon("user-online"), = i18nc("Verb, automatically load when the application is started", "Autostar= t")); + connect(m_actSetAutostart, SIGNAL(triggered(bool)), this, SLOT(onS= etAutostart())); + + m_actUnsetAutostart =3D m_mainMenu->addAction(KIcon("user-offline"= ), i18nc("Verb", "Remove Autostart")); + connect(m_actUnsetAutostart, SIGNAL(triggered(bool)), this, SLOT(o= nUnsetAutostart())); + + m_actRename =3D m_mainMenu->addAction(KIcon("edit-rename"), i18nc(= "Verb, change the name of an item", "Rename")); + connect(m_actRename, SIGNAL(triggered(bool)), this, SLOT(onRenameB= ookmark())); + + m_actChangeIcon =3D m_mainMenu->addAction(KIcon("view-media-visual= ization"), i18nc("Verb, change the icon of an item", "Change icon...")); + connect(m_actChangeIcon, SIGNAL(triggered(bool)), this, SLOT(onCha= ngeIconBookmark())); + + m_mainMenu->addSeparator(); + m_mainMenu->addAction(SKGMainPanel::getMainPanel()->getGlobalActio= n("tab_overwritebookmark")); + } + if (m_mainMenu) m_mainMenu->popup(ui.kBookmarksList->mapToGlobal(pos)); } = diff --git a/plugins/skrooge/skrooge_operation/skgoperationpluginwidget.cpp= b/plugins/skrooge/skrooge_operation/skgoperationpluginwidget.cpp index 1d3eaef..8afb7c9 100644 --- a/plugins/skrooge/skrooge_operation/skgoperationpluginwidget.cpp +++ b/plugins/skrooge/skrooge_operation/skgoperationpluginwidget.cpp @@ -227,6 +227,7 @@ SKGOperationPluginWidget::SKGOperationPluginWidget(SKGD= ocumentBank* iDocument) connect(ui.kAmountSharesEdit, SIGNAL(textChanged(QString)), this, SLOT= (onOperationCreatorModified()), Qt::QueuedConnection); connect(ui.kCommissionEdit, SIGNAL(textChanged(QString)), this, SLOT(o= nOperationCreatorModified()), Qt::QueuedConnection); connect(ui.kTaxEdit, SIGNAL(textChanged(QString)), this, SLOT(onOperat= ionCreatorModified()), Qt::QueuedConnection); + connect(ui.kAccountEdit, SIGNAL(currentIndexChanged(int)), this, SLOT(= onOperationCreatorModified()), Qt::QueuedConnection); = dataModified("", 0); onOperationCreatorModified(); @@ -248,7 +249,7 @@ QString SKGOperationPluginWidget::currentAccount() accounts.removeAll("hide"); accounts.removeAll("operations"); accounts.removeAll("templates"); - if (accounts.count() =3D=3D 1) return ui.kOperationView->getShowWidget= ()->getAction(accounts.at(0))->text(); + if (accounts.count() =3D=3D 1) return ui.kOperationView->getShowWidget= ()->getAction(accounts.at(0))->toolTip(); return ""; } = @@ -531,6 +532,11 @@ void SKGOperationPluginWidget::onOperationCreatorModif= ied() = ui.kAddOperationBtn->setEnabled(activated); ui.kModifyOperationBtn->setEnabled(activated && nbSelect > 0 && (ui.kW= idgetSelector->getSelectedMode() =3D=3D 0 || ui.kWidgetSelector->getSelect= edMode() =3D=3D 1 || ui.kWidgetSelector->getSelectedMode() =3D=3D 2)); + + m_numberFieldIsNotUptodate =3D true; + if (ui.kNumberEdit->hasFocus()) { + fillNumber(); + } } = void SKGOperationPluginWidget::onUpdateOperationClicked() @@ -1574,7 +1580,7 @@ void SKGOperationPluginWidget::onRefreshInformationZo= ne() = void SKGOperationPluginWidget::onAccountChanged() { - SKGTRACEIN(1, "SKGOperationPluginWidget::onFilterChanged"); + SKGTRACEIN(1, "SKGOperationPluginWidget::onAccountChanged"); if (!currentAccount().isEmpty()) { //Get account object SKGAccountObject act(getDocument()); @@ -1613,7 +1619,11 @@ void SKGOperationPluginWidget::fillNumber() { SKGTRACEIN(10, "SKGOperationPluginWidget::fillNumber"); QStringList list; - getDocument()->getDistinctValues("v_operation_next_numbers", "i_number= ", "", list); + QString account =3D ui.kAccountEdit->text(); + QString wc; + if (!account.isEmpty()) + wc =3D "rd_account_id IN (SELECT id FROM account WHERE t_name=3D'"= + SKGServices::stringToSqlString(account) + "')"; + getDocument()->getDistinctValues("v_operation_next_numbers", "i_number= ", wc, list); = //Fill completion KCompletion* comp =3D ui.kNumberEdit->completionObject(); @@ -1699,7 +1709,7 @@ void SKGOperationPluginWidget::onFastEdition() if (isWidgetEditionEnabled(ui.kTypeEdit->lineEdit())) ui.kType= Edit->setText(op.getMode()); if (isWidgetEditionEnabled(ui.kUnitEdit->lineEdit())) ui.kUnit= Edit->setText(op.getAttribute("t_UNIT")); if (isWidgetEditionEnabled(ui.kCategoryEdit->lineEdit())) ui.k= CategoryEdit->setText(op.getAttribute("t_CATEGORY")); - if (isWidgetEditionEnabled(ui.kCommentEdit)) ui.kCommentEdit->= setText(op.getComment()); + if (isWidgetEditionEnabled(ui.kCommentEdit->lineEdit())) ui.kC= ommentEdit->setText(op.getComment()); if (isWidgetEditionEnabled(ui.kPayeeEdit->lineEdit())) ui.kPay= eeEdit->setText(op.getAttribute("t_PAYEE")); if (isWidgetEditionEnabled(ui.kTrackerEdit->lineEdit())) ui.kT= rackerEdit->setText(op.getAttribute("t_REFUND")); if (currentAccount().isEmpty()) ui.kAccountEdit->setText(op.ge= tAttribute("t_ACCOUNT")); diff --git a/skgbankmodeler/skgcategoryobject.cpp b/skgbankmodeler/skgcateg= oryobject.cpp index a7d9ad0..2421855 100644 --- a/skgbankmodeler/skgcategoryobject.cpp +++ b/skgbankmodeler/skgcategoryobject.cpp @@ -200,7 +200,7 @@ SKGError SKGCategoryObject::getParentCategory(SKGCatego= ryObject& oCategory) cons { SKGError err; QString parent_id =3D getAttribute("rd_category_id"); - if (!parent_id.isEmpty()) err =3D getDocument()->getObject("v_category= ", "id=3D" % parent_id , oCategory); + if (!parent_id.isEmpty() && parent_id !=3D "0") err =3D getDocument()-= >getObject("v_category", "id=3D" % parent_id , oCategory); return err; } = diff --git a/skgbankmodeler/skgdocumentbank.cpp b/skgbankmodeler/skgdocumen= tbank.cpp index 19c12a7..71efdcf 100644 --- a/skgbankmodeler/skgdocumentbank.cpp +++ b/skgbankmodeler/skgdocumentbank.cpp @@ -167,7 +167,7 @@ SKGError SKGDocumentBank::endTransaction(bool succeedde= d) = QString SKGDocumentBank::getViewsIndexesAndTriggersVersion() { - return "2011.12.25_" % getParameter("SKG_LANGUAGE"); + return "2011.12.31_" % getParameter("SKG_LANGUAGE"); } = SKGError SKGDocumentBank::refreshViewsIndexesAndTriggers() @@ -358,7 +358,7 @@ SKGError SKGDocumentBank::refreshViewsIndexesAndTrigger= s() "SELECT DISTINCT i_number, rd_account_id FROM operation" = << "CREATE VIEW v_operation_next_numbers AS " - "SELECT T1.i_number+1 AS i_number FROM v_operation_numbers AS = T1 LEFT OUTER JOIN v_operation_numbers T2 " + "SELECT T1.i_number+1 AS i_number, T1.rd_account_id FROM v_ope= ration_numbers AS T1 LEFT OUTER JOIN v_operation_numbers T2 " "ON T2.rd_account_id=3DT1.rd_account_id AND T2.i_number=3DT1.i= _number+1 " "WHERE T1.i_number!=3D0 AND (T2.i_number IS NULL) ORDER BY T1.= i_number" = diff --git a/skgbasegui/skgmainpanel.cpp b/skgbasegui/skgmainpanel.cpp index 702c634..b31fe79 100644 --- a/skgbasegui/skgmainpanel.cpp +++ b/skgbasegui/skgmainpanel.cpp @@ -548,6 +548,9 @@ void SKGMainPanel::registedGlobalAction(const QString& = iIdentifier, KAction* iAc = KAction* SKGMainPanel::getGlobalAction(const QString& iIdentifier) { + if (!m_registeredGlogalAction.contains(iIdentifier)) { + SKGTRACE << "WARNING: Actione [" << iIdentifier << "]" << endl; + } return m_registeredGlogalAction[iIdentifier]; } = diff --git a/tests/scripts/init.sh.in b/tests/scripts/init.sh.in index 758b589..b255230 100755 --- a/tests/scripts/init.sh.in +++ b/tests/scripts/init.sh.in @@ -66,11 +66,19 @@ sikulirun() = java -jar $SIKULI_HOME/sikuli-script.jar ${TESTDIR}/sikuli/$1.sikuli -s >= $LOGFILE 2>&1 rc=3D$? + if [ $rc =3D 0 ] ; then + grep "\[error\]" $LOGFILE + a=3D$? + if [ $a =3D 0 ] ; then + rc=3D99 + fi + fi if [ $rc !=3D 0 ] ; then echo "sikuli execution error:"$rc cat $LOGFILE else #check output + = rc=3D0 fi return $rc diff --git a/tests/sikuli/shared.sikuli/Dcnotsave.png b/tests/sikuli/shared= .sikuli/Dcnotsave.png deleted file mode 100644 index 8baf481..0000000 Binary files a/tests/sikuli/shared.sikuli/Dcnotsave.png and /dev/null differ diff --git a/tests/sikuli/shared.sikuli/shared.py b/tests/sikuli/shared.sik= uli/shared.py index 2455c15..31d3d06 100644 --- a/tests/sikuli/shared.sikuli/shared.py +++ b/tests/sikuli/shared.sikuli/shared.py @@ -4,7 +4,6 @@ from sikuli.Sikuli import * def openFile(fileName): click("File.png") click("Open.png") - click("Dcnotsave.png") paste("gameI.png", fileName) click("Open-1.png") =09