On 6/22/22 12:07, Thomas Baumgart via KMyMoney-devel wrote:
On Mittwoch, 22. Juni 2022 16:10:26 CEST Jack via KMyMoney-devel wrote:
On 6/22/22 02:18, Thomas Baumgart via KMyMoney-devel wrote:
On Dienstag, 21. Juni 2022 22:46:35 CEST Jack via KMyMoney-devel wrote:
I'm trying to find an way to easily switch between an investment
account and it's brokerage account.  I have figured out how to test for
the two types of accounts (testing the .accountType() or looking for "
(Brokerage)" at the end of the name.)  However, I don't see any way to
look up an account by name.  Does this actually require looping through
all accounts and testing if the name matches?
In master you can do this:

    QString accountName;
    auto account = 
MyMoneyFile::instance()->accountsModel()->itemByName(accountName);

    or if you want to stick with the model type access to the data:

    auto idx = 
MyMoneyFile::instance()->accountsModel()->indexByName(accountName);
    auto name = idx.data(eMyMoney::Model::AccountNameRole).toString();

which in fact does the looping for you in AccountsModel::indexListByName().

Hope that helps.
Thanks.  Either of those is shorter than what I came up with, although
mine does seem to work (looking with gdb.)

My current problem is that I'm trying to add a "go to brokerage" line
after the "go to account" and "go to payee" menu choices, but it is not
appearing in any of the menus (either main menu or context menu.)  I
can't find anywhere in the code where either of the old ones appears
where I haven't added the new one, so I don't know what I am missing.
Did you increase the version of the .rc menu file? Something that I also
run into myself.
That sounds like the reason.  I'll try that later.
OTOH, this could be much different in 5.1.  I am not working on 5.1 anymore.
Concentrate on master.
I'd like to complete it in 5.1, so I can use it for my actual work. As I understand, master (especially the new ledger) is not yet sufficiently safe for production use.
In the meantime I came across MyMoneyAccount::brokerageName() that returns
that constructed name for the brokerage account for an account of type
Investment. Not sure if that already exists in 5.1 though.

It does, although I did it manually, using the same underlying code.  I probably should use the function, so when the brokerage account actually gets stored, and that function gets updated, that can then be used without changing my code.

Jack

Reply via email to