Changeset View
Changeset View
Standalone View
Standalone View
kmymoney/views/kaccountsview.cpp
Show All 19 Lines | |||||
20 | 20 | | |||
21 | // ---------------------------------------------------------------------------- | 21 | // ---------------------------------------------------------------------------- | ||
22 | // QT Includes | 22 | // QT Includes | ||
23 | 23 | | |||
24 | #include <QTimer> | 24 | #include <QTimer> | ||
25 | #include <QMenu> | 25 | #include <QMenu> | ||
26 | #include <QAction> | 26 | #include <QAction> | ||
27 | #include <QBitArray> | 27 | #include <QBitArray> | ||
28 | #include <QFileDialog> | ||||
28 | 29 | | |||
29 | // ---------------------------------------------------------------------------- | 30 | // ---------------------------------------------------------------------------- | ||
30 | // KDE Includes | 31 | // KDE Includes | ||
31 | 32 | | |||
32 | #include <KMessageBox> | 33 | #include <KMessageBox> | ||
33 | 34 | | |||
34 | // ---------------------------------------------------------------------------- | 35 | // ---------------------------------------------------------------------------- | ||
35 | // Project Includes | 36 | // Project Includes | ||
36 | 37 | | |||
37 | #include "onlinejobadministration.h" | 38 | #include "onlinejobadministration.h" | ||
38 | #include "knewaccountwizard.h" | 39 | #include "knewaccountwizard.h" | ||
39 | #include "kbalancechartdlg.h" | 40 | #include "kbalancechartdlg.h" | ||
40 | #include "kmymoneyutils.h" | 41 | #include "kmymoneyutils.h" | ||
41 | #include "kmymoneysettings.h" | 42 | #include "kmymoneysettings.h" | ||
42 | #include "storageenums.h" | 43 | #include "storageenums.h" | ||
43 | #include "menuenums.h" | 44 | #include "menuenums.h" | ||
44 | 45 | | |||
45 | using namespace Icons; | 46 | using namespace Icons; | ||
46 | 47 | | |||
47 | KAccountsView::KAccountsView(QWidget *parent) : | 48 | KAccountsView::KAccountsView(QWidget *parent) : | ||
48 | KMyMoneyAccountsViewBase(*new KAccountsViewPrivate(this), parent) | 49 | KMyMoneyAccountsViewBase(*new KAccountsViewPrivate(this), parent) | ||
49 | { | 50 | { | ||
50 | connect(pActions[eMenu::Action::NewAccount], &QAction::triggered, this, &KAccountsView::slotNewAccount); | 51 | connect(pActions[eMenu::Action::NewAccount], &QAction::triggered, this, &KAccountsView::slotNewAccount); | ||
51 | connect(pActions[eMenu::Action::EditAccount], &QAction::triggered, this, &KAccountsView::slotEditAccount); | 52 | connect(pActions[eMenu::Action::EditAccount], &QAction::triggered, this, &KAccountsView::slotEditAccount); | ||
52 | connect(pActions[eMenu::Action::DeleteAccount], &QAction::triggered, this, &KAccountsView::slotDeleteAccount); | 53 | connect(pActions[eMenu::Action::DeleteAccount], &QAction::triggered, this, &KAccountsView::slotDeleteAccount); | ||
53 | connect(pActions[eMenu::Action::CloseAccount], &QAction::triggered, this, &KAccountsView::slotCloseAccount); | 54 | connect(pActions[eMenu::Action::CloseAccount], &QAction::triggered, this, &KAccountsView::slotCloseAccount); | ||
54 | connect(pActions[eMenu::Action::ReopenAccount], &QAction::triggered, this, &KAccountsView::slotReopenAccount); | 55 | connect(pActions[eMenu::Action::ReopenAccount], &QAction::triggered, this, &KAccountsView::slotReopenAccount); | ||
55 | connect(pActions[eMenu::Action::ChartAccountBalance], &QAction::triggered, this, &KAccountsView::slotChartAccountBalance); | 56 | connect(pActions[eMenu::Action::ChartAccountBalance], &QAction::triggered, this, &KAccountsView::slotChartAccountBalance); | ||
56 | connect(pActions[eMenu::Action::MapOnlineAccount], &QAction::triggered, this, &KAccountsView::slotAccountMapOnline); | 57 | connect(pActions[eMenu::Action::MapOnlineAccount], &QAction::triggered, this, &KAccountsView::slotAccountMapOnline); | ||
57 | connect(pActions[eMenu::Action::UnmapOnlineAccount], &QAction::triggered, this, &KAccountsView::slotAccountUnmapOnline); | 58 | connect(pActions[eMenu::Action::UnmapOnlineAccount], &QAction::triggered, this, &KAccountsView::slotAccountUnmapOnline); | ||
58 | connect(pActions[eMenu::Action::UpdateAccount], &QAction::triggered, this, &KAccountsView::slotAccountUpdateOnline); | 59 | connect(pActions[eMenu::Action::UpdateAccount], &QAction::triggered, this, &KAccountsView::slotAccountUpdateOnline); | ||
59 | connect(pActions[eMenu::Action::UpdateAllAccounts], &QAction::triggered, this, &KAccountsView::slotAccountUpdateOnlineAll); | 60 | connect(pActions[eMenu::Action::UpdateAllAccounts], &QAction::triggered, this, &KAccountsView::slotAccountUpdateOnlineAll); | ||
61 | connect(pActions[eMenu::Action::AccountSetCustomIcon], &QAction::triggered, this, &KAccountsView::slotSetCustomIcon); | ||||
62 | connect(pActions[eMenu::Action::AccountRemoveCustomIcon], &QAction::triggered, this, &KAccountsView::slotRemoveCustomIcon); | ||||
60 | } | 63 | } | ||
61 | 64 | | |||
62 | KAccountsView::~KAccountsView() | 65 | KAccountsView::~KAccountsView() | ||
63 | { | 66 | { | ||
64 | } | 67 | } | ||
65 | 68 | | |||
66 | void KAccountsView::executeCustomAction(eView::Action action) | 69 | void KAccountsView::executeCustomAction(eView::Action action) | ||
67 | { | 70 | { | ||
▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Line(s) | 153 | if (typeid(obj) != typeid(MyMoneyAccount) && | |||
152 | return; | 155 | return; | ||
153 | 156 | | |||
154 | const auto& acc = static_cast<const MyMoneyAccount&>(obj); | 157 | const auto& acc = static_cast<const MyMoneyAccount&>(obj); | ||
155 | 158 | | |||
156 | const QVector<eMenu::Action> actionsToBeDisabled { | 159 | const QVector<eMenu::Action> actionsToBeDisabled { | ||
157 | eMenu::Action::NewAccount, eMenu::Action::EditAccount, eMenu::Action::DeleteAccount, | 160 | eMenu::Action::NewAccount, eMenu::Action::EditAccount, eMenu::Action::DeleteAccount, | ||
158 | eMenu::Action::CloseAccount, eMenu::Action::ReopenAccount, | 161 | eMenu::Action::CloseAccount, eMenu::Action::ReopenAccount, | ||
159 | eMenu::Action::ChartAccountBalance, | 162 | eMenu::Action::ChartAccountBalance, | ||
160 | eMenu::Action::UnmapOnlineAccount, eMenu::Action::MapOnlineAccount, eMenu::Action::UpdateAccount | 163 | eMenu::Action::UnmapOnlineAccount, eMenu::Action::MapOnlineAccount, eMenu::Action::UpdateAccount, | ||
164 | eMenu::Action::AccountRemoveCustomIcon, eMenu::Action::AccountSetCustomIcon | ||||
161 | }; | 165 | }; | ||
162 | 166 | | |||
163 | for (const auto& a : actionsToBeDisabled) | 167 | for (const auto& a : actionsToBeDisabled) | ||
164 | pActions[a]->setEnabled(false); | 168 | pActions[a]->setEnabled(false); | ||
165 | 169 | | |||
166 | pActions[eMenu::Action::NewAccount]->setEnabled(true); | 170 | pActions[eMenu::Action::NewAccount]->setEnabled(true); | ||
167 | 171 | | |||
168 | if (acc.id().isEmpty()) { | 172 | if (acc.id().isEmpty()) { | ||
Show All 39 Lines | 211 | if (protocols.count() > 0) { | |||
208 | pActions[eMenu::Action::UpdateAccount]->setEnabled(true); | 212 | pActions[eMenu::Action::UpdateAccount]->setEnabled(true); | ||
209 | } | 213 | } | ||
210 | } | 214 | } | ||
211 | } | 215 | } | ||
212 | 216 | | |||
213 | } else { | 217 | } else { | ||
214 | pActions[eMenu::Action::MapOnlineAccount]->setEnabled(d->m_onlinePlugins && !d->m_onlinePlugins->isEmpty()); | 218 | pActions[eMenu::Action::MapOnlineAccount]->setEnabled(d->m_onlinePlugins && !d->m_onlinePlugins->isEmpty()); | ||
215 | } | 219 | } | ||
216 | 220 | if (!file->isStandardAccount(d->m_currentAccount.id())) { | |||
221 | if (!d->m_currentAccount.value(QStringLiteral("kmm_custom_icon_file")).isEmpty()) | ||||
tbaumgart: Disable the actions if the current item is a standard account. | |||||
222 | pActions[eMenu::Action::AccountRemoveCustomIcon]->setEnabled(true); | ||||
223 | pActions[eMenu::Action::AccountSetCustomIcon]->setEnabled(true); | ||||
Maybe I'm not seeing something, but It's not possible to set custom icon if it hasn't been set before. Is that correct? wojnilowicz: Maybe I'm not seeing something, but It's not possible to set custom icon if it hasn't been set… | |||||
224 | } | ||||
217 | break; | 225 | break; | ||
218 | } | 226 | } | ||
219 | default: | 227 | default: | ||
220 | break; | 228 | break; | ||
221 | } | 229 | } | ||
222 | 230 | | |||
223 | QBitArray skip((int)eStorage::Reference::Count); | 231 | QBitArray skip((int)eStorage::Reference::Count); | ||
224 | if (!d->m_currentAccount.id().isEmpty()) { | 232 | if (!d->m_currentAccount.id().isEmpty()) { | ||
▲ Show 20 Lines • Show All 351 Lines • ▼ Show 20 Line(s) | 567 | { | |||
576 | if (it_p != d->m_onlinePlugins->constEnd()) { | 584 | if (it_p != d->m_onlinePlugins->constEnd()) { | ||
577 | // plugin found, call it | 585 | // plugin found, call it | ||
578 | (*it_p)->updateAccount(d->m_currentAccount); | 586 | (*it_p)->updateAccount(d->m_currentAccount); | ||
579 | } | 587 | } | ||
580 | 588 | | |||
581 | // re-enable the disabled actions | 589 | // re-enable the disabled actions | ||
582 | updateActions(d->m_currentAccount); | 590 | updateActions(d->m_currentAccount); | ||
583 | } | 591 | } | ||
592 | | ||||
593 | void KAccountsView::slotSetCustomIcon() | ||||
594 | { | ||||
595 | Q_D(KAccountsView); | ||||
596 | auto fileName = QFileDialog::getOpenFileName(this, i18n("Select icon"), "", i18n("Image Files (*.png *.jpg *.jpeg *.bmp *.ico)")); | ||||
Qt can also process gif, pbm, pgm, ppm, xbm and xpm images, please add them in the filter list. christiand: Qt can also process gif, pbm, pgm, ppm, xbm and xpm images, please add them in the filter list. | |||||
It would be nice if you could check if the user doesn't give us bmp file sized 2000 px x 2000 px. It would also be nice if you could scale the icon user provided and copy it so that the fileName will never become invalid. wojnilowicz: It would be nice if you could check if the user doesn't give us bmp file sized 2000 px x 2000… | |||||
597 | d->setCustomIcon(fileName); | ||||
wojnilowicz: Is that proxy method really needed? | |||||
598 | } | ||||
599 | | ||||
600 | void KAccountsView::slotRemoveCustomIcon() | ||||
601 | { | ||||
602 | Q_D(KAccountsView); | ||||
603 | d->removeCustomIcon(); | ||||
wojnilowicz: Is that proxy method really needed? | |||||
604 | } | ||||
605 | No newline at end of file |
Disable the actions if the current item is a standard account.