Showing preview only (1,279K chars total). Download the full file or copy to clipboard to get everything.
Repository: liato/android-bankdroid
Branch: master
Commit: 3a164ae699b2
Files: 328
Total size: 60.6 MB
Directory structure:
gitextract_2xrfz_mg/
├── .gitattributes
├── .gitignore
├── .travis.yml
├── CHANGELOG
├── CONTRIBUTING.md
├── CONTRIBUTORS.txt
├── LICENSE
├── README.rst
├── app/
│ ├── .gitignore
│ ├── build.gradle
│ ├── crashlytics.properties.example
│ ├── proguard-rules.pro
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── sonyericsson/
│ │ │ └── extras/
│ │ │ └── liveview/
│ │ │ ├── IPluginServiceCallbackV1.aidl
│ │ │ └── IPluginServiceV1.aidl
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── ast/
│ │ │ │ │ └── util/
│ │ │ │ │ └── CookieParser.java
│ │ │ │ └── liato/
│ │ │ │ └── bankdroid/
│ │ │ │ ├── AboutActivity.java
│ │ │ │ ├── ActivityHelper.java
│ │ │ │ ├── BankEditActivity.java
│ │ │ │ ├── BankdroidApplication.java
│ │ │ │ ├── BetterPopupWindow.java
│ │ │ │ ├── DataRetrieverTask.java
│ │ │ │ ├── LockableActivity.java
│ │ │ │ ├── LockablePreferenceActivity.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── PairApplicationsActivity.java
│ │ │ │ ├── SettingsActivity.java
│ │ │ │ ├── StartupReceiver.java
│ │ │ │ ├── TimePreference.java
│ │ │ │ ├── TransactionsActivity.java
│ │ │ │ ├── WebViewActivity.java
│ │ │ │ ├── adapters/
│ │ │ │ │ └── AccountsAdapter.java
│ │ │ │ ├── appwidget/
│ │ │ │ │ ├── AutoRefreshService.java
│ │ │ │ │ ├── BankdroidWidgetProvider.java
│ │ │ │ │ ├── BankdroidWidgetProvider_2x1.java
│ │ │ │ │ ├── BankdroidWidgetProvider_4x1.java
│ │ │ │ │ └── WidgetConfigureActivity.java
│ │ │ │ ├── banking/
│ │ │ │ │ └── BankFactory.java
│ │ │ │ ├── db/
│ │ │ │ │ ├── DBAdapter.java
│ │ │ │ │ ├── Database.java
│ │ │ │ │ ├── DatabaseHelper.java
│ │ │ │ │ └── LegacyDatabase.java
│ │ │ │ ├── liveview/
│ │ │ │ │ ├── LiveViewService.java
│ │ │ │ │ ├── PluginConstants.java
│ │ │ │ │ ├── PluginReceiver.java
│ │ │ │ │ └── PluginUtils.java
│ │ │ │ ├── lockpattern/
│ │ │ │ │ ├── ChooseLockPattern.java
│ │ │ │ │ ├── ChooseLockPatternExample.java
│ │ │ │ │ ├── ChooseLockPatternTutorial.java
│ │ │ │ │ ├── ConfirmLockPattern.java
│ │ │ │ │ ├── LinearLayoutWithDefaultTouchRecepient.java
│ │ │ │ │ ├── LockPatternUtils.java
│ │ │ │ │ └── LockPatternView.java
│ │ │ │ ├── provider/
│ │ │ │ │ └── BankTransactionsProvider.java
│ │ │ │ └── utils/
│ │ │ │ ├── EmulatorUtils.java
│ │ │ │ ├── LoggingUtils.java
│ │ │ │ └── NetworkUtils.java
│ │ │ └── net/
│ │ │ ├── margaritov/
│ │ │ │ └── preference/
│ │ │ │ └── colorpicker/
│ │ │ │ ├── AlphaPatternDrawable.java
│ │ │ │ ├── ColorPickerDialog.java
│ │ │ │ ├── ColorPickerPanelView.java
│ │ │ │ ├── ColorPickerPreference.java
│ │ │ │ └── ColorPickerView.java
│ │ │ └── sf/
│ │ │ └── andhsli/
│ │ │ └── hotspotlogin/
│ │ │ └── SimpleCrypto.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── grow_from_bottom.xml
│ │ │ ├── grow_from_top.xml
│ │ │ ├── grow_from_topleft_to_bottomright.xml
│ │ │ ├── shrink_from_bottom.xml
│ │ │ ├── shrink_from_bottomright_to_topleft.xml
│ │ │ ├── shrink_from_top.xml
│ │ │ ├── zoom_enter.xml
│ │ │ └── zoom_exit.xml
│ │ ├── drawable/
│ │ │ ├── btn_check.xml
│ │ │ ├── lock_anim.xml
│ │ │ ├── menu_button.xml
│ │ │ ├── popup_button.xml
│ │ │ └── widget_progress.xml
│ │ ├── layout/
│ │ │ ├── about.xml
│ │ │ ├── bank.xml
│ │ │ ├── bank_spinner_dropdown_item.xml
│ │ │ ├── bank_spinner_item.xml
│ │ │ ├── choose_lock_pattern.xml
│ │ │ ├── choose_lock_pattern_example.xml
│ │ │ ├── choose_lock_pattern_tutorial.xml
│ │ │ ├── confirm_lock_pattern.xml
│ │ │ ├── dialog_color_picker.xml
│ │ │ ├── empty.xml
│ │ │ ├── listitem_accounts_group.xml
│ │ │ ├── listitem_accounts_item.xml
│ │ │ ├── main.xml
│ │ │ ├── pair_applications_layout.xml
│ │ │ ├── popup_account.xml
│ │ │ ├── popup_bank.xml
│ │ │ ├── toolbar.xml
│ │ │ ├── transaction_date.xml
│ │ │ ├── transaction_item.xml
│ │ │ ├── transactions.xml
│ │ │ ├── webview.xml
│ │ │ ├── widget.xml
│ │ │ ├── widget_large.xml
│ │ │ ├── widget_large_transparent.xml
│ │ │ └── widget_transparent.xml
│ │ ├── layout-land/
│ │ │ ├── choose_lock_pattern.xml
│ │ │ ├── confirm_lock_pattern.xml
│ │ │ └── dialog_color_picker.xml
│ │ ├── menu/
│ │ │ ├── about.xml
│ │ │ └── main.xml
│ │ ├── values/
│ │ │ ├── array.xml
│ │ │ ├── colors.xml
│ │ │ ├── config.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── themes.xml
│ │ ├── values-sv/
│ │ │ ├── array.xml
│ │ │ └── strings.xml
│ │ ├── values-v21/
│ │ │ └── themes.xml
│ │ └── xml/
│ │ ├── appwidget_info.xml
│ │ ├── appwidget_info_large.xml
│ │ └── settings.xml
│ └── test/
│ └── java/
│ └── com/
│ └── liato/
│ └── bankdroid/
│ ├── DataRetrieverTaskTest.java
│ └── appwidget/
│ └── DataRetrieverTaskTest.java
├── assets/
│ ├── btn_check.psd
│ ├── icabanken.psd
│ ├── logos.psd
│ └── widgets.psd
├── bankdroid-core/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── liato/
│ │ └── bankdroid/
│ │ └── configuration/
│ │ └── DefaultConnectionConfiguration.java
│ └── resources/
│ └── i18n/
│ ├── application.properties
│ └── application_sv_SE.properties
├── bankdroid-interface/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── liato/
│ └── bankdroid/
│ └── api/
│ ├── Provider.java
│ ├── ProviderFactory.java
│ ├── configuration/
│ │ ├── Entry.java
│ │ ├── Field.java
│ │ ├── FieldBuilder.java
│ │ ├── FieldType.java
│ │ ├── FieldValidator.java
│ │ └── ProviderConfiguration.java
│ ├── domain/
│ │ ├── ProviderConnection.java
│ │ └── account/
│ │ ├── Account.java
│ │ ├── CreditCardAccount.java
│ │ ├── Equity.java
│ │ ├── EquityAccount.java
│ │ ├── LiabilityAccount.java
│ │ ├── Payment.java
│ │ ├── PrePaidCardAccount.java
│ │ ├── Transaction.java
│ │ ├── TransactionAccount.java
│ │ └── impl/
│ │ ├── AbstractAccountBuilder.java
│ │ ├── AccountBuilder.java
│ │ ├── CreditCardAccountBuilder.java
│ │ ├── EquityAccountBuilder.java
│ │ ├── EquityBuilder.java
│ │ ├── LiabilityAccountBuilder.java
│ │ ├── PrePaidCardAccountBuilder.java
│ │ ├── TransactionAccountBuilder.java
│ │ └── TransactionBuilder.java
│ └── service/
│ └── ServiceLoader.java
├── bankdroid-legacy/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── liato/
│ │ │ │ └── bankdroid/
│ │ │ │ ├── Helpers.java
│ │ │ │ ├── banking/
│ │ │ │ │ ├── Account.java
│ │ │ │ │ ├── Bank.java
│ │ │ │ │ ├── BankChoice.java
│ │ │ │ │ ├── BasicProviderConfiguration.java
│ │ │ │ │ ├── LegacyBankFactory.java
│ │ │ │ │ ├── LegacyBankHelper.java
│ │ │ │ │ ├── LegacyProviderConfiguration.java
│ │ │ │ │ ├── Transaction.java
│ │ │ │ │ ├── banks/
│ │ │ │ │ │ ├── AbsIkanoPartner.java
│ │ │ │ │ │ ├── AkeliusInvest.java
│ │ │ │ │ │ ├── AkeliusSpar.java
│ │ │ │ │ │ ├── AppeakPoker.java
│ │ │ │ │ │ ├── BetterGlobe.java
│ │ │ │ │ │ ├── Bioklubben.java
│ │ │ │ │ │ ├── BlekingeTrafiken.java
│ │ │ │ │ │ ├── Bredband2VoIP.java
│ │ │ │ │ │ ├── BrummerKF.java
│ │ │ │ │ │ ├── CSN.java
│ │ │ │ │ │ ├── Chalmrest.java
│ │ │ │ │ │ ├── DanskeBank.java
│ │ │ │ │ │ ├── Everydaycard.java
│ │ │ │ │ │ ├── FirstCard.java
│ │ │ │ │ │ ├── Hemkop.java
│ │ │ │ │ │ ├── Hors.java
│ │ │ │ │ │ ├── IKEA.java
│ │ │ │ │ │ ├── IkanoBank.java
│ │ │ │ │ │ ├── Jojo.java
│ │ │ │ │ │ ├── McDonalds.java
│ │ │ │ │ │ ├── Meniga.java
│ │ │ │ │ │ ├── MinPension.java
│ │ │ │ │ │ ├── Nordnet.java
│ │ │ │ │ │ ├── OKQ8.java
│ │ │ │ │ │ ├── Ostgotatrafiken.java
│ │ │ │ │ │ ├── Osuuspankki.java
│ │ │ │ │ │ ├── Payson.java
│ │ │ │ │ │ ├── PlusGirot.java
│ │ │ │ │ │ ├── SevenDay.java
│ │ │ │ │ │ ├── SveaDirekt.java
│ │ │ │ │ │ ├── SvenskaSpel.java
│ │ │ │ │ │ ├── TestBank.java
│ │ │ │ │ │ ├── TicketRikskortet.java
│ │ │ │ │ │ ├── Vasttrafik.java
│ │ │ │ │ │ ├── Zidisha.java
│ │ │ │ │ │ ├── americanexpress/
│ │ │ │ │ │ │ ├── AmericanExpress.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── AccountActivity.java
│ │ │ │ │ │ │ ├── Amount.java
│ │ │ │ │ │ │ ├── Capabilities.java
│ │ │ │ │ │ │ ├── Card.java
│ │ │ │ │ │ │ ├── Date.java
│ │ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ │ ├── LoginResponse.java
│ │ │ │ │ │ │ ├── LogonData.java
│ │ │ │ │ │ │ ├── Summary.java
│ │ │ │ │ │ │ ├── SummaryData.java
│ │ │ │ │ │ │ ├── TotalBalance.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ ├── TransactionCapabilities.java
│ │ │ │ │ │ │ ├── TransactionDetails.java
│ │ │ │ │ │ │ └── TransactionsResponse.java
│ │ │ │ │ │ ├── bitcoin/
│ │ │ │ │ │ │ ├── Bitcoin.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── BlockchainResponse.java
│ │ │ │ │ │ │ ├── Input.java
│ │ │ │ │ │ │ ├── Out.java
│ │ │ │ │ │ │ ├── PrevOut.java
│ │ │ │ │ │ │ └── Transfer.java
│ │ │ │ │ │ ├── coop/
│ │ │ │ │ │ │ ├── Coop.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ └── web/
│ │ │ │ │ │ │ ├── D.java
│ │ │ │ │ │ │ ├── Model.java
│ │ │ │ │ │ │ ├── Result.java
│ │ │ │ │ │ │ └── WebTransactionHistoryResponse.java
│ │ │ │ │ │ ├── ica/
│ │ │ │ │ │ │ ├── ICA.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── Account.java
│ │ │ │ │ │ │ ├── LoginError.java
│ │ │ │ │ │ │ ├── Overview.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ └── User.java
│ │ │ │ │ │ ├── lansforsakringar/
│ │ │ │ │ │ │ ├── Lansforsakringar.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── request/
│ │ │ │ │ │ │ │ ├── AccountsRequest.java
│ │ │ │ │ │ │ │ ├── ChallengeRequest.java
│ │ │ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ │ │ ├── TransactionsRequest.java
│ │ │ │ │ │ │ │ └── UpcomingTransactionsRequest.java
│ │ │ │ │ │ │ └── response/
│ │ │ │ │ │ │ ├── Account.java
│ │ │ │ │ │ │ ├── AccountsResponse.java
│ │ │ │ │ │ │ ├── ChallengeResponse.java
│ │ │ │ │ │ │ ├── LoginResponse.java
│ │ │ │ │ │ │ ├── NumberResponse.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ └── TransactionsResponse.java
│ │ │ │ │ │ ├── nordea/
│ │ │ │ │ │ │ ├── CaptchaBreaker.java
│ │ │ │ │ │ │ ├── CaptchaBreakerNumbers.java
│ │ │ │ │ │ │ └── Nordea.java
│ │ │ │ │ │ └── rikslunchen/
│ │ │ │ │ │ ├── Rikslunchen.java
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── Envelope.java
│ │ │ │ │ └── exceptions/
│ │ │ │ │ ├── BankChoiceException.java
│ │ │ │ │ ├── BankException.java
│ │ │ │ │ └── LoginException.java
│ │ │ │ ├── provider/
│ │ │ │ │ ├── IAccountTypes.java
│ │ │ │ │ ├── IBankTransactionsProvider.java
│ │ │ │ │ └── IBankTypes.java
│ │ │ │ └── utils/
│ │ │ │ ├── ExceptionUtils.java
│ │ │ │ ├── FieldTypeMapper.java
│ │ │ │ ├── Installation.java
│ │ │ │ └── StringUtils.java
│ │ │ └── eu/
│ │ │ └── nullbyte/
│ │ │ └── android/
│ │ │ └── urllib/
│ │ │ ├── CertPinningSSLSocketFactory.java
│ │ │ ├── CertPinningTrustManager.java
│ │ │ ├── CertificateReader.java
│ │ │ ├── ClientCertificate.java
│ │ │ ├── HttpMethod.java
│ │ │ └── Urllib.java
│ │ └── res/
│ │ ├── raw/
│ │ │ ├── cert_akeliusinvest.pem
│ │ │ ├── cert_akeliusspar.pem
│ │ │ ├── cert_americanexpress_global.pem
│ │ │ ├── cert_bioklubben.pem
│ │ │ ├── cert_bredband2.pem
│ │ │ ├── cert_brummer.pem
│ │ │ ├── cert_coop.pem
│ │ │ ├── cert_csn.pem
│ │ │ ├── cert_danskebank.pem
│ │ │ ├── cert_firstcard.pem
│ │ │ ├── cert_hemkop.pem
│ │ │ ├── cert_ica.pem
│ │ │ ├── cert_ikanobank.pem
│ │ │ ├── cert_ikanopartner.pem
│ │ │ ├── cert_jojo.pem
│ │ │ ├── cert_lansforsakringar.pem
│ │ │ ├── cert_meniga.pem
│ │ │ ├── cert_minpension.pem
│ │ │ ├── cert_nordnet.pem
│ │ │ ├── cert_okq8.pem
│ │ │ ├── cert_ostgotatrafiken_login.pem
│ │ │ ├── cert_ostgotatrafiken_overview.pem
│ │ │ ├── cert_osuuspankki.pem
│ │ │ ├── cert_osuuspankki_mobile.pem
│ │ │ ├── cert_payson.pem
│ │ │ ├── cert_plusgirot.pem
│ │ │ ├── cert_rikslunchen.pem
│ │ │ ├── cert_sevenday.pem
│ │ │ ├── cert_sveadirekt.pem
│ │ │ ├── cert_svenskaspel.pem
│ │ │ ├── cert_ticketrikskortet.pem
│ │ │ ├── cert_vasttrafik.pem
│ │ │ ├── cert_zidisha.pem
│ │ │ └── loading.html
│ │ ├── values/
│ │ │ └── strings.xml
│ │ └── values-sv/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ ├── com/
│ │ └── liato/
│ │ └── bankdroid/
│ │ └── utils/
│ │ └── ExceptionUtilsTest.java
│ └── not/
│ └── bankdroid/
│ └── at/
│ └── all/
│ ├── ExceptionFactory.java
│ └── ExceptionThrower.java
├── build.gradle
├── config/
│ ├── ide/
│ │ └── androidstudio/
│ │ └── AndroidStyle.xml
│ └── quality/
│ ├── checkstyle/
│ │ ├── checkstyle.xml
│ │ └── suppressions.xml
│ ├── findbugs/
│ │ └── findbugs-filter.xml
│ ├── lint/
│ │ └── lint.xml
│ ├── pmd/
│ │ └── pmd-ruleset.xml
│ └── quality.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── tools/
├── nordea_captcha_breaker/
│ ├── captchabreaker.py
│ ├── captchas_item_template.html
│ └── captchas_template.html
├── refresh_bank_certificates
└── update-suppressions.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
CHANGELOG merge=union
================================================
FILE: .gitignore
================================================
# built application files
*.apk
*.ap_
# files for the dex VM
*.dex
# Java class files
*.class
# generated files
bin/
gen/
# Local configuration file (sdk path, etc)
local.properties
dev/
*.pyc
.DS_Store
*.orig
# Local Eclipse files
.classpath
.project
# Android studio
.gradle
build/
*.iws
*.ipr
*.swp
out/
.idea/libraries
.idea/workspace.xml
.idea/misc.xml
.idea/vcs.xml
.idea/*
*.iml
.idea
#Project specific
app/src/main/java/com/liato/bankdroid/db/Crypto.*
app/src/main/java/com/liato/bankdroid/db/Crypto.java.dev
dev/
app/release.keystore
app/crashlytics.properties
app/keystore.properties
================================================
FILE: .travis.yml
================================================
language: android
jdk: oraclejdk8
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
env:
matrix:
- ANDROID_TARGET=android-25 ANDROID_ABI=armeabi-v7a
android:
components:
- tools
- platform-tools
- build-tools-25.0.1
- android-25
- extra-android-m2repository
script: ./gradlew assembleDebug check
notifications:
email: false
slack:
secure: asrV7/94tGqJbhotBAkPFi80PWJY3lcu7uYo855kpujXQHP61b0gC5gHnAairdD+MtrwICOmsJE9KIK/HOIpFrzwE+IwxJ+p6cGL9kX9blX+ZThcz1HkZgEK/EgaMSUxLKZFGrz0LUdktoZ9h+VixeRg05S4VijA7A814iA78fI=
branches:
except:
- gh-pages
- transaction-uid
================================================
FILE: CHANGELOG
================================================
Please view this file on the master branch, on stable branches it's out of date.
(Unreleased)
* Update certificates
* Remove support for Avanza and Avanza Mini
v1.9.14 (2017-01-06)
* Updated certificates for First Card, Osuuspankki and Östgötatrafiken
v1.9.13 (2016-11-03)
* Fixes Crashlytics logging issue
v1.9.12 (2016-11-02)
* Bioklubben: Use https. It's secure and http page no longer exists.
* Östgötatrafiken: Adapt to new login page (Facebook login not supported)
* Removes broken encryption
v1.9.11 (2016-10-26)
* Warn about disabled banks in the transactions list
* Show warning text about disabled banks in the main activity
* Removes support for TrustBuddy since they're no longer in business
* Removes support for Audi since they require MobiltBankId
* Removes support for VolvoFinans since they require MobiltBankId
* Removes support for EasyCard since they require MobiltBankId
* Removes support for Preem since they require MobiltBankId
* Removes support for ResursBank since they require MobiltBankId
* Removes support for Seat since they require MobiltBankId
* Removes support for Shell since they require MobiltBankId
* Removes support for Skoda since they require MobiltBankId
* Removes support for SupremeCard since they require MobiltBankId
* Removes support for Villabanken since they require MobiltBankId
* Removes support for Volkswagen since they require MobiltBankId
* Merged NordnetDirekt with Nordnet.
* Merged AvanzaMini with Avanza.
v1.9.10.10 (2016-10-17)
* Fixes crash for Amex
* Strikethrough balance in widget indicates update problems.
v1.9.10.9 (2016-10-12)
* Länsförsäkringar: Remove broken web links
* Improve Javadocs in the Bank class
* Make successfully refreshing a disabled bank re-enable it
* Östgötatrafiken: Update certificate
* Östgötatrafiken: Adapt to changed web page
* Skip Server Name Indication (SNI) when refreshing bank certificates to avoid certificate mismatches (bankdroid doesn't use SNI)
* Ticket Rikskortet: Adapt to changed web page
* Removes IcaBanken since they now require BankID
* SveaDirekt: Adapt to changed web page
* Rikslunchen: Adapt to new web service
* AmericanExpress: Use their mobile API
v1.9.10.8 (2016-09-29)
* Add a Volatile account to the Test Bank that always changes its balance.
* Fix widget not updating when the balance change was lower than the notification threshold.
v1.9.10.7 (2016-08-18)
* Update certificates for AmericanExpress and Coop
v1.9.10.6 (2016-08-01)
* Update outdated certificates
* Upgrade to android-build-tools v.24
* Upgrade to gradle 2.14
v1.9.10.5 (2016-04-03)
* Fix for OKQ8
* Update certificates for AmericanExpress, DankeBank, FirstCard, Rikslunchen and SveaDirekt.
v1.9.10.4 (2016-02-25)
* Removes support for EspressoHouse
* Adds support Högskolerestaurangers kund-/studentkort
* Update certificates for American Express, Marginalen, PayPal, Ticket Rikskortet, Zidisha, Östgötatrafiken
v1.9.10.3 (2015-12-24)
* Fix for Länsförsäkringar
v1.9.10.2 (2015-12-22)
* Fixes for Coop login.
* Removes support for Forex Bank due to BankId requirement.
* Fixes for MinPension login.
* Update certificates for Coop, ICA, Osuuspankki, PlusGirot, SevenDay, Meniga & Steam.
* Fixes for Bredband2.
* Added support for Android 6.0 Marshmallow.
v1.9.10.1 (2015-11-22)
* Update certificate for ICA.
* Fixes bug where banks without password could not be added.
v1.9.10.0 (2015-11-06)
* Removes support for PayPal due to complex web-login.
* Removes support for Swedbank, Sparbankerna, Marginalen and NordeaDK due to BankId requirement.
* Updates certificates for Bredband2, EasyCard, Nordea DK, Nordnet, Östgötatrafiken, Osuuspankki, PayPal, Villabanken
* Adds support for custom properties for bank implementations.
v1.9.9.5 (2015-07-18)
* Updates certificates for Akelius Spar, Akelius Invest, Hemköp and Resurs Bank
v1.9.9.4 (2015-06-12)
* Fixes parsing of incoming payments for American Express (thanks to mhagander)
* Updates certificates for Nordnet, Avanza, Länsförsäkringar, Forex Bank, OKQ8 and Volvo Finans
v1.9.9.3 (2015-05-24)
* Updates certificates for Paypal, AmericanExpress, Svenska spel
v1.9.9.2 (2015-04-16)
* Updates certificates for AmericanExpress, MinPension, Swedbank and Sparbankerna
* Adapt to new URLs used by Ticket Rikskortet
* Fixes application crash for Samsung devices running Android 4.2
v1.9.9.1 (2015-04-09)
* Fixes application crash for Jojo accounts.
* Removes support for DinersClub due to BankId requirement.
* Fixes login issues with some PayPal accounts.
v1.9.9.0 (2015-04-02)
* Adds support for minpension.se.
* Adds option to disable auto updates while roaming.
* Removes Skandiabanken due to their new BankId requirement.
* Fixes issue with Nordnet (thanks to jonasgroth).
* Fixes crash when account is not available from widget.
* Fixes transactions for Forex Bank (thanks to jonasgroth).
* Fixes transaction issues for EspressoHouse.
* Fixes Payson balance. NOTE: Transactions not supported yet (thanks to robho).
* Fixes LockPattern crashes for Samsung Galaxy devices.
* Fixes issue with PayPal (now even supporting WWW login and transactions).
* Updates certificates for IkanoPartners
* Removes support for Sparbanken Öresund due to BankId requirement.
v1.9.8.0 (2015-02-27)
* Adds support for Bredband2's VoIP service (thanks to fredrike)
* Adds support for EspressoHouse (thanks to fredrike)
* Adds support for multiple travel cards for JoJo Reskassa
* Sets subaccounts for Avanza to hidden by default (thanks to fredrike)
* Order transactions by descending date
* Fixes www login for Blekingetrafiken (thanks to fredrike)
* Fixes www login for Avanza (thanks to fredrike)
* Fixes date formatting for VolvoFinans
* Fixes application crash for Coop.
* Fixes application crash when setting LockPattern on some devices
* Fixes support for Nordea accounts with number in the account name
* Fixes Swedbank and Sparbankerna if you have corporate credit card
* Fixes www login for Coop
* Fixes application crash if SonyEricsson's LiveView integration is enabled
* Fixes application crash if screen is rotated during a bank update
* Improved error handling
* Disabled www-button for Swedbank and Sparbankerna
* Updated certificate for Östgötatrafiken, AmericanExpress, Brummer KF
* Removes support for Handelsbanken, SEB, Chevrolet, Djurgarden, EurobonusMastercard, EurobonusMastercardDk, EurobonusMastercardNo, Eurocard, Opel, Quintessentially, SJPrio, Saab, Statoil, Wallet because they now requires BankId.
v1.9.7.4: (2015-02-21)
* Updated certificates for ICA Banken, Västtrafik, Brummer KF, Diners Club, Ikano Bank, Marginalen, Trustbuddy, Zidisha, AmericanExpress, TicketRikskortet
* Adds support for Coop's MedMera-Före and MedMera-Efter (thanks to fredrike)
* Adds support for Blekingetrafiken (thanks to fredrike)
* Adds support for Östgötatrafiken (thanks to robho)
* Adds support for point account and transactions for Coop (thanks to fredrike)
* Adds support for Coop's MedMera Efter credit card (thanks to fredrike)
* Adds possibility to go back to the account view from the transaction view by clicking on the logotype (thanks to fredrike)
* Use SvenskaSpel's API (thanks to mikaeler)
* Fix for null currency for credit cards for Swedbank and Sparbankerna. Defaults to SEK.
* Fix Handshake failed errors for FirstCard and PostGirot
* Fix for credit card currency error for Nordea (thanks to Ree)
* Fix for Västtrafik (thanks to jonasgroth)
* Fix balance for Avanza (thanks to fredrike)
v1.9.7.3: (2014-11-21)
* Fix for Nordea balance (thanks to sed)
* Fix for widget sizes
v1.9.7.2: (2014-11-20)
* Quickfix for widgets, still work to be done
* Improved account order for Swedbank (thanks to goober)
v1.9.7.1: (2014-11-19)
* Swedbank and Sparbankerna: Show transactions, fix for widget, credit card transactions, various fixes (thanks to goober, cortex, mikaeler)
* Updated certificate for American Express, Brummer KF, CSN, EasyCard, FirstCard, ICA, Jojo, Meniga, Nordea DK, PlusGirot, Svenskaspel and Västtrafik (thanks to goober, Niclasl, auno)
* Account balance for Nordea credit cards (thanks to sed03)
* Fix for Jojo (thanks to sed03)
* Toggle account visibility by long pressing an account (thanks to fredrike)
* Show all account types for Avanza (thanks to fredrike)
v1.9.7.0: (2014-10-31)
* Fix for Nordea (thanks to rhoot and wicol)
* Use Swedbank's API (thanks to goober for the implementation and Swedbank for giving us access to their API)
* Updated SSL certificate for Skandiabanken
* Fix for Chalmrest balance (thanks to emilan)
v1.9.6.16: (2014-09-18)
* Updated SSL certificates for American Express, Coop, Eurocard, Forex Bank, Ikano Bank, Marginalen Bank, Meniga, Nordnet, Nordnet Direkt, OKQ8, Payson, Rikslunchen, SevenDay, Trustbuddy and Villabanken
* Improvements to Villabanken account parsing (thanks to knifhen)
* Improvements to Coop
v1.9.6.15: (2014-06-07)
* Fix for Coop MedMedmera Visa and Coop Kort
* Updated SSL certificate for SEB cards (SAS Eurobonus, SJPrio, Statoil and more)
* Allow all characters when entering username for PlusGirot
* Updated SevenDay SSL certificate
* Improvements to ResursBank
* Login fix for Ikano Partner cards (Ikea, Preem, Shell, Skoda and more)
v1.9.6.14: (2014-05-13)
* Fix for ICA Banken
* Fix for Payson
* Partial fix for Coop
+ Support for Sveadirekt (thanks to goober)
+ Support for Supreme Card
v1.9.6.13: (2014-04-30)
* Prevent recent apps thumbnail for pattern lock and settings
* Updated SSL certificate for American Express, Coop, CSN, Handelsbanken, Osuuspankki, PayPal, Resurs Bank, Sevenday and Zidisha.
v1.9.6.12: (2014-04-14)
* Updated SSL certificate for Nordea
v1.9.6.11: (2014-04-10)
* Updated SSL certificate for Swedbank
* Transactions working for ICA accounts
* Fix for ICA Banken
v1.9.6.10: (2014-03-26)
* Updated SSL certificate for Akelius Invest
* Fix ICA for accounts with transactions
v1.9.6.9: (2014-03-24)
* Updated SSL certificate for Avanza
* Use Avanza implementation for Avanza Mini
* Update ICA implementation to use internal ICA API
v1.9.6.8: (2014-03-20)
* Updated SSL certificate for American Express
* Fix for PayPal
* Fix for ICA Banken (new api-key)
v1.9.6.7: (2014-02-21)
* Fix login fields parsing for Nordnet
* Fix for regular Jojo cards
* Use FLAG_SECURE for ICS and newer to prevent thumbnail in recent tasks list
* Updated SSL certificates for American Express and Swedbank
v1.9.6.6: (2014-01-24)
* Fix for Lunchkortet
* Fix for Jojo
* Updated SSL certificates for Ticket Rikskortet, Paypal, Avanza, Avanza Mini and Payson
v1.9.6.5: (2013-12-19)
* Correct currency for SAS Eurobonus Mastercard Norway and Denmark
* Fix for ICA Banken (new api-key)
v1.9.6.4: (2013-12-13)
* Fix for SAS Eurobonus Mastercard Norway
* Fix for SEB Cards (Eurocard, SAS Eurobonus, Statoil, SJ Prio...) with multiple accounts
* Fix for Bitcoin where transfers had notes
* Fix for ICA Banken
v1.9.6.3: (2013-12-05)
* Fix for American Express
* Fix for Eurocard
* Fix for SAS Eurobonus Mastercard
* Fix for Statoil Mastercard
* Fix for Bioklubben
* Fix for SJPrio
* Various bugfixes
v1.9.6.2: (2013-11-03)
* Fix for Avanza (thanks to NanoRage)
* Fix for Ikano Bank
* Improved security of secure connection with certificate pinning
+ Support for Eurobonus Mastercard Denmark
+ Support for Bitcoin
v1.9.6.1: (2013-09-30)
* Fix for PayPal
* Fix for Diners Club (thanks to ScuttleSE)
* ICA Banken uses their API (thanks to goober)
* Fix for multiple accounts in Forex Bank (thanks to rickythefox)
* Fix for Villabanken (thanks to knifhen)
+ Support for SAS EuroBonus MasterCard Norway
- Removed Danske Bank
- Removed Sparbanken Öresund
v1.9.6.0: (2013-06-22)
* Fix for PayPal
* Fix for Hemköp
* Fix for ICA
* Fix for Volvofinans
+ Support for Forex Bank (thanks to rickythefox)
+ Support for BetterGlobe (thanks to Tuxie)
+ Support for Zidisha (thanks to Tuxie)
v1.9.5.4: (2013-04-28)
* Fix for Rikslunchen (thanks to chrfle)
* Fix for Audikortet (maybe)
+ Support for TrustBuddy (thanks to Tuxie)
+ Support for Brummer Privat KF (thanks to Tuxie)
v1.9.5.3: (2013-04-02)
* Fix for Skodakortet
* Fix for Volvofinans transactions
* Fix for reappearing Akelius Spar/Invest accounts
v1.9.5.2: (2013-03-27)
* Fix for Coop
* Show multiple Nordnet accounts
v1.9.5.1: (2013-02-26)
* Fix for Länsförsäkringar saving accounts
v1.9.5: (2013-02-21)
* Fix for Länsförsäkringar
+ Support for Svenska Spel (thanks to nixi)
+ Support for Appeak Poker
v1.9.4: (2013-01-04)
* Fix for ICA Banken transactions (thanks to fruktsallad)
* Fix for Länsförsäkringar
* Fix for Skandiabanken accounts without transactions
* Fix for Amex transactions (thanks to goober)
* Fixes for Marginalen Bank (thanks to jsiverskog)
v1.9.3: (2012-11-29)
+ Support for Marginalen Bank (thanks to jsiverskog)
* Fix for password saving in Android 4.2+ (thanks to gfu)
* Fix for ICA (thanks to oskla129)
* Fix reappearing accounts on ICA Banken
v1.9.2: (2012-10-21)
* Fix for Länsförsäkringar - Now uses the same API as their official app
v1.9.1: (2012-10-11)
+ Support for Chalmrest (thanks to emilan)
* Fix for Västtrafik (thanks to erifre)
* Fix for Nordea captcha - login as many times as you want with the built in captcha breaker
* Fix for Bioklubben
* Fix for PayPal
* Better auto updates with SEB
* Fix for EverydayCard (thanks to d95andek)
* Fix for Volvofinans (thanks to d95andek)
- Removed support for Steam Wallet
v1.9.0: (2012-06-25)
+ Support for Ticket Rikskortet
+ Support for Bioklubben
* Fix for Meniga (thanks to bjooork)
* Fix for Nordea DK (thanks to goober)
* Fix for Västtrafik (thanks to erifre)
* Fix for Statoil Mastercard
* Fix for SAS Eurobonus Mastercard
* Fix for Eurocard
v1.8.9: (2012-04-16)
+ New setting: Number of simultaneous notifications
* Fix for graphical bug on devices running older versions of Android (sorry for the poor testing before release)
v1.8.8: (2012-04-13)
+ Support for Meniga (thanks to bjooork)
+ New notification setting: Display change only
+ Disable thumbnail in recent apps list (Honeycomb, ICS)
* Fix for Skandiabanken, now using their internal JSON-api (thanks to woody)
* Fix for Jojo (thanks to wanders)
* Fix for Rikslunchen (thanks to mafa73)
* Fix for IKEA
v1.8.7: (2012-01-29)
* Fix for SEB
* Fix for double lock pattern when opening transactions view from widget
v1.8.6: (2012-01-29)
* Fix for SEB
* Fix for LED color picker on pre ICS devices
v1.8.5: (2012-01-27)
+ Support for LED notifications
+ Support for Akelius Invest
* Fix for Coop
* Fix for Hemköp
* Fix for SEB
* Fix for SevenDay
* Fix for ICA
v1.8.4: (2011-12-04)
* Fix for Coop
* Fix for Länsförsäkringar (thanks to MatsKarlsson!)
+ Support for Everydaycard (thanks to d95andek!)
+ Hardware acceleration is now activated for Honeycomb and ICS
* Smarter automatic updates
v1.8.3: (2011-11-13)
+ Support for American Express
+ Support for Västtrafik
* Fix for SEB
v1.8.1: (2011-09-26)
+ Support for Danske Bank
+ Support for Nordea (Danmark) (thanks to goober!)
* Fix for Skandiabanken (thanks to woody!)
v1.8.0: (2011-08-24)
+ Support for AudiKortet
+ Support for Chevrolet Big Plus Card
+ Support for Djurgårdskortet
+ Support for IKEA HANDLA Kort
+ Support for Nordnetdirekt
+ Support for PlusGirot
+ Support for Preem Privatkort
+ Support for Quintessentially Credit Card
+ Support for SaabKortet
+ Support for Seatkortet
+ Support for Shell MasterCard
+ Support for Skandiabanken (thanks to woody)
+ Support for Skodakortet
+ Support for Volkswagenkortet
+ Support for wallet MasterCard
* Fix for ICA
+ Support for Sony Ericcson LiveView notifications (thanks to firetech)
+ New setting: Only update between user defined times (thanks to woody)
* Fix for security bug where a user could circumvent the password protection
* Calculate the total amount correctly
+ Donate button added
v1.7.3 (2011-05-04)
* Fix for Jojo
+ Support for OpelKortet
+ Support for SJ Prio MasterCard
+ Support for Sparbanken Syd
+ Support for Sparbanken Öresund
+ Show old CSN loans
+ Multi-bank support for Swedbank
+ New setting: Display balance without decimals
+ New setting: Smallest change to trigger notification
v1.7.2: (2011-04-14)
* Fix for Swedbank transactions (update account from app to see transactions)
* Fix for Länsförsäkringar
+ New setting: Update transaction history from widget
v1.7.1: (2011-04-12)
* Fix for Swedbank
* For for Payson when using multiple currencies
* Support for multiple currencies in DinersClub
* Improved error handling for CSN
+ Progress bar in webview
+ Bank icons when choosing a bank
+ Setting: Disable visible pattern on pattern lock
v1.7.0: (2011-03-25)
+ Support for SevenDay
+ Support for Nordnet
+ Support for Osuuspankki/Andelsbanken
+ Support for Volvofinans
+ Support for Resurs Bank
+ Support for Länsförsäkringar Pension
+ Support for McDonald's Presentkort
+ New setting: Open main view or transactions view from widget
+ Loans information for Swedbank
+ Support for additional currencies for Nordea
* Repayments to CSN are shown as transactions
* Fixed FC-bug in Länsförsäkringar if user had pension account
* Sort and display all transactions for SEB
* New logo for Ikano Bank (after complaints from Ikano that the old one did not follow their graphic guidelines)
* Fix for FirstCard
* Sorted transactions for Statoil and Eurobonus
* Show all transactions for Eurocard
* "Home" button clears history stack
v1.6.3: (2011-02-06)
* FC fix when opening settings
v1.6.2: (2011-02-05)
+ Support for SEB (automatic website login doesn't work yet)
+ Support for SAS EuroBonus Mastercard
+ Support for Rikslunchen
+ Support for Hemköp Kundkort
+ Transactions for Diners Club
* PayPal business accounts are now supported
+ Content Provider - Lets other apps use data from Bankdroid after user confirmation
v1.6.1: (2010-12-29)
* Fix for FC when using pattern lock in landscape mode
* Larger hit box on "Home" button
v1.6.0: (2010-12-29)
+ Login to any of your banks website automatically by clicking the WWW-button.
* Design changes
* Eurocard widgetbug fixed
* Fix for Ikano Bank
v1.5.3: (2010-12-21)
+ Support for Ikano Bank
+ MedMera Faktura for Coop
* Multiple accounts for Eurocard
v1.5.2: (2010-12-18)
+ Support for Diners Club
+ Transactions for Länsförsäkringar
v1.5.1: (2010-12-15)
+ Funds and loans for Länsförsäkringar
* MedMera Visa for Coop fixed
* Fix for Handelsbanken
* Password field show numeric keyboard if appropriate
v1.5.0: (2010-12-12)
+ Support for Jojo Reskassa
+ Support for Steam Wallet
+ Support for Avanza (again...)
+ New setting: Round balance on widgets
+ Clicking a widget shows transactions for that account.
* Additional account information for OKQ8 and Statoil
* Fix for ICA Banken
* Fix for Coop
v1.4.4: (2010-11-26)
+ Support for Payson
* Länsförsäkringar fixed
* Coop login problems fixed/improved
+ New settings: Blur account balance on widgets
v1.4.3: (2010-11-19)
- Support for Avanza removed
* PayPal is working again
* Show all transactions for Statoil
* Fix for EuroCard
* Fix for First Card
* Hidden accounts are not counted towards the total sum
* Replaced password lock with pattern lock
+ Support for Remote Notifier plugin
+ Support for OpenWatch plugin
+ Custom notification sound
+ New setting: Don't update transactions on automatic updates
v1.4.2: (2010-11-03)
* Fixed username field for Avanza
v1.4.1: (2010-11-03)
* Fix for Nordea
v1.4.0: (2010-11-02)
+ Support for OKQ8 (thanks to cola)
+ Support for PayPal
+ Support for Eurocard with transactions
+ Support for First Card with transactions
* Avanza was split into Avanza and AvanzaMini
+ Nordea credit cards (Visa Gold and others)
+ Transactions for Coop MedMera Visa
* Statoil Mastercard fixed
* Transactions for Handelsbanken fixed
* A bit faster updates by skipping an unnecessary login when fetching transactions (thanks to DEGE)
* Notifications show changes for accounts, not banks.
+ Encryption for passwords
+ Option to hide accounts
+ Option to disable notifications for accounts
+ New setting: Choose which notifications to display (funds, loands, credit cards)
* Every bank has a pre defined keyboard layout (numeric for Nordea, email for PayPal)
* Loans are not counted towards the total bank sum
v1.3.1: (2010-09-20)
* Fix for Swedbank
* Fix for Avanza
+ Support for Avanza mini
+ Support for Villabanken
v1.3.0: (2010-09-19)
* Widgets with Handelsbanken accounts are working again
* Transactions for ICA Banken
* Coop now also works with "MedMera-kortet"
* Transactions for Coop MedMera
* Transactions for Handelsbanken
* Hit box for updating from widgets is larger
* Support for loans in Swedbank
* Support for funds and loans in Nordea
* Widget with transparent background
+ Support for ICA Kortet with transactions
+ Support for Statoil MasterCard with transactions
+ Support for Avanza
v1.2.1: (2010-07-13)
* Added missing ICA Banken logo
* Fix amount formatting
v1.2.0: (2010-07-12)
* Fixed Nordea bug (login failed when user had an "e-faktura" waiting)
* New design
* Confirm password field
+ Link to the banks website
+ Support for Handelsbanken
+ Support for Coop
+ Transaction history for Nordea
+ Transaction history for Swedbank
* Improved login error detection
+ Support for QVGA devices
v1.1.4: (2010-06-03)
* Fix for Nordea
v1.1.3: (2010-06-02)
+ New widget size, 2x1
* Widgets are updated on boot
v1.1.2: (2010-05-31)
* Working fix for ICA Banken
v1.1.1: (2010-05-31)
* Fix for FC bug with widgets
* Fix for ICA Banken
v1.1.0: (2010-05-31)
+ Widgets
+ Automatic updates
+ Notifications on account changes
+ Support for Länsförsäkringar
+ Improved application lock
v1.0.3: (2010-05-16)
+ Option to password protect the application
v1.0.2: (2010-05-12)
* Fix for Swedbank
v1.0.1: (2010-05-10)
+ Support for ICA Banken
v1.0.0: (2010-05-05)
+ First public release
+ Support for Nordea
+ Support for Swedbank
================================================
FILE: CONTRIBUTING.md
================================================
# Contribute to Bankdroid
This guide details how to use issues and pull requests (for new code) to improve Bankdroid.
## Code Style and Template
We use the [Android Open-Source Project (AOSP) Code Style Guidelines](http://source.android.com/source/code-style.html).
We strongly suggest that you use the [`AndroidStyle.xml`](/config/ide/androidstudio/AndroidStyle.xml) template file, included in this repository, in Android Studio to format your code:
1. Place `AndroidStyle.xml` in your Android Studio `/codestyles` directory (e.g., `%userprofile%\.AndroidStudio\config\codestyles`, or `~/Library/Preferences/AndroidStudio/codestyles/` on OS X)
2. Restart Android Studio.
3. Go to "File->Settings->Code Style", and under "Scheme" select "AndroidStyle" and click "Ok".
4. Right-click on the files that contain your contributions and select "Reformat Code", check "Optimize imports", and select "Run".
## Closing policy for issues and pull requests
Bankdroid is a popular project and the capacity to deal with issues and pull requests is limited. Out of respect for our volunteers, issues and pull requests not in line with the guidelines listed in this document may be closed without notice.
Please treat our volunteers with courtesy and respect, it will go a long way towards getting your issue resolved.
Issues and pull requests should be in English and contain appropriate language for audiences of all ages.
## Issue tracker
The [issue tracker](https://github.com/liato/android-bankdroid/issues) is only for obvious bugs, misbehavior, & feature requests in the latest stable or development release of Bankdroid. When submitting an issue please conform to the issue submission guidelines listed below. Not all issues will be addressed and your issue is more likely to be addressed if you submit a pull request which partially or fully addresses the issue.
### Issue tracker guidelines
**[Search](https://github.com/liato/android-bankdroid/search?q=&ref=cmdform&type=Issues)** for similar entries before submitting your own, there's a good chance somebody else had the same issue or feature request. Show your support with `:+1:` and/or join the discussion. Please submit issues in the following format (as the first post) and feature requests in a similar format:
1. **Summary:** Summarize your issue in one sentence (what goes wrong, what did you expect to happen)
2. **Steps to reproduce:** How can we reproduce the issue?
3. **Expected behavior:** What did you expect the app to do?
4. **Observed behavior:** What did you see instead? Describe your issue in detail here.
5. **Device and Android version:** What make and model device (e.g., Samsung Galaxy S3) did you encounter this on? What Android version (e.g., Android 4.0 Ice Cream Sandwich) are you running? Is it the stock version from the manufacturer or a custom ROM?
5. **Screenshots:** Can be created by pressing the Volume Down and Power Button at the same time on Android 4.0 and higher.
6. **Possible fixes**: If you can, link to the line of code that might be responsible for the problem.
## Pull requests
We welcome pull requests with fixes and improvements to Bankdroid code, tests, and/or documentation. The features we would really like a pull request for are open issues with the [feature](https://github.com/liato/android-bankdroid/issues?labels=feature&page=1&state=open), [broken](https://github.com/liato/android-bankdroid/issues?labels=broken&page=1&state=open) or [improvement](https://github.com/liato/android-bankdroid/issues?labels=improvement&page=1&state=open) labels.
### Pull request guidelines
If you can, please submit a pull request with the fix or improvements including tests. If you don't know how to fix the issue but can write a test that exposes the issue we will accept that as well. In general bug fixes that include a regression test are merged quickly while new features without proper tests are least likely to receive timely feedback. The workflow to make a pull request is as follows:
1. Fork the project on GitHub
2. Create a feature branch
3. Write tests and code
4. Apply the `AndroidStyle.xml` style template to your code in Android Studio.
5. Add your changes to the [CHANGELOG](/CHANGELOG)
6. If you have multiple commits please combine them into one commit by [squashing them](http://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
7. Push the commit to your fork
8. Submit a pull request with a motive for your change and the method you used to achieve it
9. [Search for issues](https://github.com/liato/android-bankdroid/search?q=&ref=cmdform&type=Issues) related to your pull request and mention them in the pull request description or comments
We will accept pull requests if:
* The code has proper tests and all tests pass (or it is a test exposing a failure in existing code)
* It can be merged without problems (if not please use: `git rebase master`)
* It doesn't break any existing functionality
* It's quality code that conforms to standard style guides and best practices
* The description includes a motive for your change and the method you used to achieve it
* It is not a catch all pull request but rather fixes a specific issue or implements a specific feature
* It keeps the Bankdroid code base clean and well structured
* We think other users will benefit from the same functionality
* If it makes changes to the UI the pull request should include screenshots
* It is a single commit (please use `git rebase -i` to squash commits)
## License
By contributing code to this project via pull requests, patches, or any other process, you are agreeing to license your contributions under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
================================================
FILE: CONTRIBUTORS.txt
================================================
--------------------------------------------------------------------------------
Development
--------------------------------------------------------------------------------
liato https://github.com/liato
DEGE1 https://github.com/DEGE1
Magnus Hagander https://github.com/mhagander
Pierre Chateau https://github.com/PMC
Magnus Andersson https://github.com/magnusart
cork https://github.com/cork
Emil Hesslow https://github.com/WizKid
Peter Björkman https://github.com/woody2
Joakim Andersson https://github.com/firetech
Mathias Åhsberg https://github.com/goober
Lars Wiklund https://github.com/lawi75
Fredrik Lindberg https://github.com/fredriklindberg
Erik Fredriksen https://github.com/erifre
Mats Karlsson https://github.com/MatsKarlsson
Snah https://github.com/Snaah
Jonas Björk https://github.com/bjooork
Anders Waldenborg https://github.com/wanders
Mattias Fagerström https://github.com/mafa73
Jacob Siverskog https://github.com/jsiverskog
Andreas Gunnerås https://github.com/d95andek
Emil Andersson https://github.com/emilan
oskla129 https://github.com/oskla129
Per Wigren https://github.com/Tuxie
Joakim Lundborg https://github.com/cortex
Jonathan Hjertström https://github.com/nixi
Tim Jansson https://github.com/timtux
Christer Fletcher https://github.com/chrfle
Richard Ginzburg https://github.com/rickythefox
ScuttleSE https://github.com/ScuttleSE
Andreas Knifh https://github.com/knifhen
NanoRage https://github.com/NanoRage
Adam Nybäck https://github.com/nadam
MathiasBois https://github.com/MathiasBois
Johan Sköld https://github.com/rhoot
Wictor https://github.com/wicol
sed03 https://github.com/sed03
Fredrik Erlandsson https://github.com/fredrike
Niclasl https://github.com/NiclasI
Mikael Eriksson https://github.com/mikaeler
Mikael Auno https://github.com/auno
robho https://github.com/robho
Johan Walles https://github.com/walles
Stats at:
https://github.com/liato/android-bankdroid/graphs/contributors?type=a
--------------------------------------------------------------------------------
Beta testing
--------------------------------------------------------------------------------
Swedroid users http://goo.gl/9tJeH
================================================
FILE: LICENSE
================================================
Copyright 2015 liato
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.rst
================================================
.. image:: https://travis-ci.org/liato/android-bankdroid.svg?branch=master
:target: https://travis-ci.org/liato/android-bankdroid
.. image:: https://bankdroid.herokuapp.com/badge.svg
:alt: Join the chat at https://bankdroid.herokuapp.com/
:target: https://bankdroid.herokuapp.com/
Bankdroid
=========
Bankdroid is an Android app for Swedish banks, payment cards and similar services. Key features include:
* Automatic updates of your balance and transactions
* Notifications whenever your balance changes
* Widgets to show your balance anywhere on your home screen
More information can be found at:
* `Bankdroid on Google Play <https://play.google.com/store/apps/details?id=com.liato.bankdroid>`_
* `Bankdroid thread at the Swedroid Forum <http://goo.gl/9tJeH>`_ (Swedish)
Contribute or report broken banks
------------------------------------
The following information is needed for troubleshooting a broken bank or if you want a new bank to be supported
by Bankdroid.
1. Address to login page.
2. Address and html code for the landing page after a successful login.
3. Address and html code for the page with the accounts overview.
4. Address and html code for the page with an account's transaction history.
NOTE. Do not forget to replace your personal information in the html code with random
information before you send everything to android [at] nullbyte.eu.
You can also open an issue here at Github with the required files included as an attachment.
Development environment
-----------------------
Bankdroid is written for Android Studio 0.8.2 and Gradle 1.12. Here's how to get the code up and
running on your computer:
1. Make sure you have `Android Studio 0.8.2 or later <https://developer.android.com/sdk/installing/studio.html>`_
2. `Clone <https://help.github.com/articles/which-remote-url-should-i-use>`_ the project (if you want to contribute you should `fork <https://help.github.com/articles/fork-a-repo>`_ the project first and then clone your fork)
3. Open the project's settings.gradle file in Android Studio and select "Use default gradle wrapper (recommended)"
4. Select "Make project" from the Build menu
5. Select Run from the Run menu
License
-------
The Bankdroid source code is licensed under the
`Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>`_.
================================================
FILE: app/.gitignore
================================================
/build
================================================
FILE: app/build.gradle
================================================
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.ajoberstar:gradle-git:1.5.1"
// The dynamic version here is explicitly recommended by the Crashlytics docs:
// https://docs.fabric.io/android/fabric/integration.html#modify-build-gradle
//noinspection GradleDynamicVersion
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply from: '../config/quality/quality.gradle'
apply plugin: "org.ajoberstar.grgit"
if (new File('app/crashlytics.properties').exists()) {
apply plugin: 'io.fabric'
}
repositories {
maven { url 'https://maven.fabric.io/public' }
}
def keystorePropertiesFile = project.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
ext {
git = org.ajoberstar.grgit.Grgit.open()
gitVersionCode = git.tag.list().size()
gitVersionName = "${git.describe()}"
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.liato.bankdroid"
minSdkVersion 9
targetSdkVersion 25
versionCode 224 + gitVersionCode
versionName gitVersionName
}
signingConfigs {
release {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
ext.enableCrashlytics = false
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':bankdroid-legacy')
compile project(':bankdroid-core')
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.jakewharton.timber:timber:4.3.1'
compile "com.android.support:appcompat-v7:25.2.0"
compile 'com.google.collections:google-collections:1.0'
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.10.19'
}
================================================
FILE: app/crashlytics.properties.example
================================================
apiSecret=YOUR_BUILD_SECRET
apiKey=YOUR_API_KEY
================================================
FILE: app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/liato/bin/android-studio/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
#Butterknife
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.liato.bankdroid">
<application
android:name="com.liato.bankdroid.BankdroidApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:hardwareAccelerated="true"
android:allowBackup="true">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:multiprocess="false"
android:alwaysRetainTaskState="false"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/BankdroidTheme">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".TransactionsActivity"
android:label="@string/app_name"
android:theme="@style/BankdroidTheme">
</activity>
<activity
android:name=".WebViewActivity"
android:label="@string/app_name"
android:theme="@style/BankdroidTheme"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
<activity
android:name=".BankEditActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/BankdroidTheme">
</activity>
<activity
android:name=".SettingsActivity"
android:label="@string/app_name"
android:theme="@style/BankdroidTheme">
</activity>
<activity
android:name=".AboutActivity"
android:label="@string/app_name"
android:theme="@style/BankdroidTheme">
</activity>
<activity
android:label="@string/app_name"
android:theme="@style/BankdroidTheme"
android:name=".lockpattern.ChooseLockPattern">
</activity>
<activity
android:label="@string/app_name"
android:theme="@style/BankdroidTheme"
android:name=".lockpattern.ChooseLockPatternExample">
</activity>
<activity
android:label="@string/app_name"
android:theme="@style/BankdroidTheme"
android:name=".lockpattern.ChooseLockPatternTutorial">
</activity>
<activity
android:theme="@style/BankdroidTheme"
android:label="@string/app_name"
android:name=".lockpattern.ConfirmLockPattern">
</activity>
<activity
android:theme="@style/Theme.AppCompat.Dialog"
android:name=".appwidget.WidgetConfigureActivity">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<receiver
android:label="@string/widget_name_small"
android:name=".appwidget.BankdroidWidgetProvider_2x1">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="com.liato.bankdroid.WIDGET_REFRESH" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info" />
</receiver>
<receiver
android:label="@string/widget_name_large"
android:name=".appwidget.BankdroidWidgetProvider_4x1">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="com.liato.bankdroid.WIDGET_REFRESH" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info_large" />
</receiver>
<service
android:enabled="true"
android:name=".appwidget.AutoRefreshService" />
<service
android:enabled="true"
android:name=".appwidget.BankdroidWidgetProvider$WidgetService" />
<receiver
android:name="StartupReceiver">
<intent-filter>
<action
android:name="android.intent.action.BOOT_COMPLETED" />
<action
android:name="android.intent.action.PACKAGE_ADDED" />
<action
android:name="android.intent.action.PACKAGE_CHANGED" />
<action
android:name="android.intent.action.PACKAGE_REPLACED" />
<action
android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<!-- <data
android:scheme="package"
android:path="com.liato.bankdroid" /> -->
</intent-filter>
</receiver>
<service
android:name=".liveview.LiveViewService"
android:label="LiveView plugin service">
</service>
<receiver
android:name=".liveview.PluginReceiver">
<intent-filter>
<action
android:name="com.sonyericsson.extras.liveview.LAUNCH_PLUGIN" />
</intent-filter>
</receiver>
<provider
android:name=".provider.BankTransactionsProvider"
android:syncable="false"
android:multiprocess="true"
android:exported="true"
android:authorities="com.liato.bankdroid.provider.BankTransactionsProvider"
android:permission="com.liato.bankdroid.permission.READ_ACCESS_BANK_TRANSACTIONS" />
<activity
android:name="PairApplicationsActivity"
android:label="@string/app_name"
android:multiprocess="false"
android:alwaysRetainTaskState="false"
android:theme="@style/BankdroidTheme">
<intent-filter>
<action
android:name="com.liato.bankroid.PAIR_APPLICATION_ACTION" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission
android:name="android.permission.VIBRATE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="com.sonyericsson.extras.liveview.permission.LIVEVIEW_API" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
<permission
android:name="com.liato.bankdroid.permission.READ_ACCESS_BANK_TRANSACTIONS"
android:label="@string/permission_provider_label"
android:description="@string/permission_provider_desc"
android:protectionLevel="dangerous" />
</manifest>
================================================
FILE: app/src/main/aidl/com/sonyericsson/extras/liveview/IPluginServiceCallbackV1.aidl
================================================
/*
* Copyright (c) 2010 Sony Ericsson
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
*
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.sonyericsson.extras.liveview;
interface IPluginServiceCallbackV1 {
// Start the plugin.
void startPlugin();
// Stop the plugin.
// A stopped plugin should stop its polling, but can stay alive
void stopPlugin();
// Should return the name the plugin used to register itself with
String getPluginName();
// Give the action needed to open the current announcement on the phone
// such as a view in browser action or something else that your application
// responds to.
void openInPhone(in String openInPhoneAction);
// Kicked out by framework. Implement this with stopSelf()
void onUnregistered();
// displayWidthPixels equals 0 and displayheigthPixels equals 0
// means no available device is attached, or has no display
void displayCaps(in int displayWidthPixels, in int displayHeigthPixels);
// Button event - note that doublepress is not implemented for the V1
// interface but still left here for compatibility reasons.
void button(in String buttonType, in boolean doublepress, in boolean longpress);
// Screen mode changed event - this notifies the current active sandbox plugin that the screen has been
// turned on or off. 0 = Screen OFF, 1 = Screen ON
void screenMode(in int screenMode);
}
================================================
FILE: app/src/main/aidl/com/sonyericsson/extras/liveview/IPluginServiceV1.aidl
================================================
/*
* Copyright (c) 2010 Sony Ericsson
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
*
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.sonyericsson.extras.liveview;
import com.sonyericsson.extras.liveview.IPluginServiceCallbackV1;
interface IPluginServiceV1 {
// Register to the Liveview application
// cb - callback instance
// imageMenu - path to the menu bitmap
// pluginName - name of the plugin - must be unique
// selectableMenu - is set to true if controlling display and getting buttons. Set to false to only handle announces
// packageName - the package name (use getPackageName()).
// returns id of plugin in system, 0 means that the registration failed
int register(in IPluginServiceCallbackV1 cb, in String imageMenu, in String pluginName, in boolean selectableMenu, in String packageName);
// This method should be called if the application/service is uninstalled using the phone application handler
// id - the plugin id received in registerPlugin
// cb - the callback
void unregister( in int id, in IPluginServiceCallbackV1 cb);
// Used to send announcements to the device - can only be used when _not_ registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// imageAnnounce - the path to the announce bitmap
// header - header text
// body - body text
// time - timestamp for this announce in milliseconds
// openInPhoneAction - a tag to use for openInPhone callback. Set to null when announce not selectable
void sendAnnounce(in int id, in String imageAnnounce, in String header, in String body, in long timestamp, in String openInPhoneAction);
// Used to send image data to the device while in sandbox mode - Can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// x - from left side
// y - from top side
// image - the path to the image on file system
void sendImage(in int id, in int x, in int y, in String image);
// Used to send image data to the device while in sandbox mode - Can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// x - from left side
// y - from top side
// bitmapData - the bitmap to send
void sendImageAsBitmap(in int id, in int x, in int y, in Bitmap bitmapData);
// Clears the display, for example if several images are sent while in sandbox mode - Can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
void clearDisplay(in int id);
// Provide the Liveview application with means to launch the service
// that shoul receive and send data in sandbox mode - Must be called if you registered as "selectableMenu"
// launcherIntent - the intent to start the plugin service
// pluginName - the name of the plugin, must match the name you registered with!
// returns -1 for failure, 0 for already registered, anything else for success
int notifyInstalled(in String launcherIntent, in String pluginName);
// Controls LED - can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// rgb565 - the color to use
// delayTime - the delay in ms
// onTime - the on time in ms
void ledControl(in int id, int rgb565, int delayTime, int onTime);
// Controls Vibration - can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// delayTime - the delay in ms
// onTime - the on time in ms
void vibrateControl(in int id, int delayTime, int onTime);
// Used to send image data to the device while in sandbox mode - Can only be used if you registered as "selectableMenu"
// id - the plugin id received in registerPlugin
// x - from left side
// y - from top side
// bitmapBytes - the byteArray containing the bitmap data
void sendImageAsBitmapByteArray(in int id, in int x, in int y, in byte[] bitmapByteArray);
// Used to put the screen in powersave mode
// id - the plugin id received in registerPlugin
void screenOff(in int id);
// Used to put the screen in dimmed mode
// id - the plugin id received in registerPlugin
void screenDim(in int id);
// Used to wake the screen from powersave mode
// id - the plugin id received in registerPlugin
void screenOn(in int id);
// Used to set the to powersave mode "AUTO"
// id - the plugin id received in registerPlugin
void screenOnAuto(in int id);
}
================================================
FILE: app/src/main/java/com/ast/util/CookieParser.java
================================================
/*
* Copyright (C) 2009 hessdroid@gmail.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ast.util;
/**
* Parses Set-Cookie HTTP response header and returns the corresponding {@link Cookie} which can be
* used for storing cookie information in java collections.
* <p/>
* <a href="http://www.ietf.org/rfc/rfc2109">RFC 2109</a>
*
* @author hessdroid@gmail.com
*/
public class CookieParser {
/**
* Parses the given <tt>setCookieString</tt> from an HTTP response and creates a {@link Cookie}
* from it.
* The {@link Cookie} can be used by clients to send cookie on subsequent requests.
*
* @param host <code>String</code> cookie host
* @param setCookieString <code>String</code> complete cookie string
* @return a {@link Cookie} that was created from the given <tt>setCookieString</tt>
*/
public static Cookie parse(String host, String setCookieString) {
if (host == null) {
throw new IllegalArgumentException("Parameter \"host\" must not be null");
}
if (setCookieString == null) {
throw new IllegalArgumentException("Parameter \"setCookieString\" must not be null");
}
Cookie result = new Cookie();
// split the cookie string on any semicolon or space(s)
String[] fields = setCookieString.split(";\\s*");
result.host = host;
// ignore leading cookie intro
result.value = fields[0].startsWith("Set-Cookie: ") ? fields[0].substring(12) : fields[0];
if (result.value.startsWith("JSESSIONID=")) {
result.sessionId = result.value.substring(11);
}
// Parse each field
for (int j = 1; j < fields.length; j++) {
if ("secure".equalsIgnoreCase(fields[j])) {
result.secure = true;
} else if (fields[j].indexOf('=') > 0) {
String[] f = fields[j].split("=");
if ("expires".equalsIgnoreCase(f[0])) {
result.expires = f[1];
} else if ("domain".equalsIgnoreCase(f[0])) {
result.domain = f[1];
} else if ("path".equalsIgnoreCase(f[0])) {
result.path = f[1];
}
}
}
return result;
}
/**
* Abstract representation of an HTTP cookie.
*/
public static class Cookie {
public String host;
public String value; // cookie string without the leading intro: "Set-Cookie: "
public String expires;
public String path;
public String domain;
public String sessionId;
public boolean secure;
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/AboutActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class AboutActivity extends LockableActivity {
@InjectView(R.id.txtVersion)
TextView mVersion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
ButterKnife.inject(this);
PackageInfo pInfo;
String version = BuildConfig.VERSION_NAME;
mVersion.setText(
getText(R.string.version).toString().replace("$version", version));
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
final MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.about, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_web:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("https://github.com/liato/android-bankdroid"));
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/ActivityHelper.java
================================================
package com.liato.bankdroid;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.ContextWrapper;
public class ActivityHelper {
public static void dismissDialog(Dialog dialog) {
if (dialog.isShowing()) { //check if dialog is showing.
//get the Context object that was used to great the dialog
Context context = ((ContextWrapper) dialog.getContext()).getBaseContext();
//if the Context used here was an activity AND it hasn't been finished
//then dismiss it
if (context instanceof Activity) {
if (!((Activity) context).isFinishing()) {
dialog.dismiss();
}
} else { //if the Context used wasnt an Activity, then dismiss it too
dialog.dismiss();
}
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/BankEditActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.google.common.collect.Iterators;
import com.crashlytics.android.Crashlytics;
import com.liato.bankdroid.api.configuration.Entry;
import com.liato.bankdroid.api.configuration.Field;
import com.liato.bankdroid.appwidget.AutoRefreshService;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankChoice;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.banking.exceptions.BankChoiceException;
import com.liato.bankdroid.banking.exceptions.BankException;
import com.liato.bankdroid.banking.exceptions.LoginException;
import com.liato.bankdroid.configuration.DefaultConnectionConfiguration;
import com.liato.bankdroid.db.DBAdapter;
import com.liato.bankdroid.utils.FieldTypeMapper;
import com.liato.bankdroid.utils.NetworkUtils;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.method.PasswordTransformationMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
import timber.log.Timber;
public class BankEditActivity extends LockableActivity implements OnItemSelectedListener {
@InjectView(R.id.spnBankeditBanklist)
Spinner mBankSpinner;
@InjectView(R.id.layoutBankConfiguration)
LinearLayout mFormContainer;
@InjectView(R.id.txtErrorDesc)
TextView mErrorDescription;
private Bank selectedBank;
private long bankId = -1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bank);
ButterKnife.inject(this);
this.getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
List<Bank> items = BankFactory.listBanks(this);
Collections.sort(items);
BankSpinnerAdapter<Bank> adapter = new BankSpinnerAdapter<>(this, items);
mBankSpinner.setAdapter(adapter);
Bundle extras = getIntent().getExtras();
if (extras != null) {
bankId = extras.getLong("id", -1);
if (bankId != -1) {
Bank bank = BankFactory.bankFromDb(bankId, this, false);
if (bank != null) {
mErrorDescription.setVisibility(
bank.isDisabled() ? View.VISIBLE : View.INVISIBLE);
mBankSpinner.setEnabled(false);
mBankSpinner.setSelection(adapter.getPosition(bank));
selectedBank = bank;
createForm(selectedBank.getConnectionConfiguration(),
DefaultConnectionConfiguration.fields()
);
populateForm(bank);
}
}
}
mBankSpinner.setOnItemSelectedListener(this);
}
@OnClick(R.id.btnSettingsOk)
public void onSubmit(View v) {
if (!validate()) {
return;
}
selectedBank.setProperties(getFormParameters(selectedBank.getConnectionConfiguration()));
selectedBank.setCustomName(getFormParameter(DefaultConnectionConfiguration.NAME));
selectedBank.setDbid(bankId);
new DataRetrieverTask(this, selectedBank).execute();
}
@OnClick(R.id.btnSettingsCancel)
public void onCancel(View v) {
this.finish();
}
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int pos, long id) {
Bank selectedBank = (Bank) parentView.getItemAtPosition(pos);
if (this.selectedBank == null || !this.selectedBank.equals(selectedBank)) {
this.selectedBank = selectedBank;
mFormContainer.removeAllViewsInLayout();
createForm(this.selectedBank.getConnectionConfiguration(),
DefaultConnectionConfiguration.fields()
);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg) {
}
private void createForm(List<Field>... configurations) {
for (List<Field> fields : configurations) {
for (Field field : fields) {
createLabel(field);
if (field.getValues().isEmpty()) {
createField(field);
} else {
createSpinner(field);
}
}
}
}
private void createLabel(Field field) {
TextView fieldText = new TextView(this);
String label = field.getLabel() + (field.isRequired() ? "" : " " + getString(R.string.optional_field));
fieldText.setText(label);
fieldText.setVisibility(field.isHidden() ? View.GONE : View.VISIBLE);
mFormContainer.addView(fieldText);
}
private void createField(Field field) {
EditText inputField = new EditText(this);
inputField.setHint(field.getPlaceholder());
if (field.isSecret()) {
inputField.setTransformationMethod(
PasswordTransformationMethod.getInstance());
} else {
inputField
.setInputType(FieldTypeMapper.fromFieldType(field.getFieldType()));
}
inputField.setVisibility(field.isHidden() ? View.GONE : View.VISIBLE);
inputField.setTag(field.getReference());
mFormContainer.addView(inputField);
}
private void createSpinner(Field field) {
Spinner spinner = new Spinner(this);
spinner.setAdapter(new ArrayAdapter<Entry>(this, android.R.layout.simple_spinner_item,
field.getValues()));
spinner.setTag(field.getReference());
mFormContainer.addView(spinner);
}
private void populateForm(Bank bank) {
EditText customName = (EditText) mFormContainer.findViewWithTag(
DefaultConnectionConfiguration.NAME);
customName.setText(bank.getCustomName());
for (Map.Entry<String, String> property : bank.getProperties().entrySet()) {
EditText propertyInput = (EditText) mFormContainer.findViewWithTag(property.getKey());
propertyInput.setText(property.getValue());
}
}
private Map<String, String> getFormParameters(List<Field> fields) {
Map<String, String> properties = new HashMap<>();
for (Field field : fields) {
properties.put(field.getReference(), getFormParameter(field.getReference()));
}
return properties;
}
private String getFormParameter(String property) {
View propertyView = mFormContainer.findViewWithTag(property);
if (propertyView instanceof EditText) {
EditText propertyInput = (EditText) propertyView;
return propertyInput.getText().toString().trim();
} else if (propertyView instanceof Spinner) {
Spinner spinnerProperty = (Spinner) propertyView;
Entry entry = (Entry) spinnerProperty.getSelectedItem();
return entry.getKey();
} else {
return null;
}
}
private boolean validate() {
boolean valid = true;
Iterator<Field> fields = Iterators.concat(selectedBank.getConnectionConfiguration().iterator(),
DefaultConnectionConfiguration.fields().iterator());
while (fields.hasNext()) {
Field field = fields.next();
try {
field.validate(getFormParameter(field.getReference()));
} catch (IllegalArgumentException e) {
valid = false;
((EditText) mFormContainer.findViewWithTag(field.getReference())).setError(e.getMessage());
}
}
return valid;
}
private class BankSpinnerAdapter<T> extends ArrayAdapter<T> {
private LayoutInflater inflater;
public BankSpinnerAdapter(Context context, List<T> items) {
super(context, R.layout.bank_spinner_item, R.id.txtBank, items);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.bank_spinner_item, parent, false);
}
((TextView) convertView.findViewById(R.id.txtBank))
.setText(((Bank) getItem(position)).getName());
((ImageView) convertView.findViewById(R.id.imgBank))
.setImageResource(((Bank) getItem(position)).getImageResource());
return convertView;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.bank_spinner_dropdown_item, parent, false);
}
((TextView) convertView.findViewById(R.id.txtBank))
.setText(((Bank) getItem(position)).getName());
((ImageView) convertView.findViewById(R.id.imgBank))
.setImageResource(((Bank) getItem(position)).getImageResource());
return convertView;
}
}
private class DataRetrieverTask extends AsyncTask<String, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(BankEditActivity.this);
private Exception exc = null;
private Bank bank;
private BankEditActivity context;
private Resources res;
public DataRetrieverTask(BankEditActivity context, Bank bank) {
this.context = context;
this.res = context.getResources();
this.bank = bank;
}
protected void onPreExecute() {
this.dialog.setMessage(res.getText(R.string.logging_in));
this.dialog.show();
}
protected Void doInBackground(final String... args) {
try {
bank.update();
bank.updateAllTransactions();
bank.closeConnection();
DBAdapter.save(bank, context);
// Transactions updated.
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
if (prefs.getBoolean("content_provider_enabled", false)) {
final ArrayList<Account> accounts = bank.getAccounts();
for (final Account account : accounts) {
AutoRefreshService.broadcastTransactionUpdate(
getBaseContext(), bank.getDbId(),
account.getId());
}
}
} catch (BankException e) {
this.exc = e;
Crashlytics.logException(e);
} catch (LoginException e) {
this.exc = e;
} catch (BankChoiceException e) {
this.exc = e;
} catch (IOException e) {
this.exc = e;
if (NetworkUtils.isInternetAvailable()) {
Crashlytics.logException(e);
}
}
return null;
}
protected void onPostExecute(final Void unused) {
AutoRefreshService.sendWidgetRefresh(context);
ActivityHelper.dismissDialog(this.dialog);
if (this.exc != null) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
if (this.exc instanceof BankChoiceException) {
final BankChoiceException e = (BankChoiceException) exc;
final String[] items = new String[e.getBanks().size()];
int i = 0;
for (BankChoice b : e.getBanks()) {
items[i] = b.getName();
i++;
}
builder.setTitle(R.string.select_a_bank);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
selectedBank.setExtras(e.getBanks().get(item).getId());
new DataRetrieverTask(context, selectedBank).execute();
}
});
} else {
Timber.w(exc, "Failed getting info from bank");
builder.setMessage(this.exc.getMessage())
.setTitle(res.getText(R.string.could_not_create_account))
.setIcon(android.R.drawable.ic_dialog_alert)
.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
}
AlertDialog alert = builder.create();
if (!context.isFinishing()) {
alert.show();
}
} else {
context.finish();
}
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/BankdroidApplication.java
================================================
package com.liato.bankdroid;
import com.liato.bankdroid.utils.LoggingUtils;
import android.app.Application;
import android.widget.Toast;
public class BankdroidApplication extends Application {
private String message = "";
@Override
public void onCreate() {
super.onCreate();
LoggingUtils.createLogger(this);
}
public void setApplicationMessage(String messageText) {
message = messageText == null ? "" : messageText;
}
public void showAndDeleteApplicationMessage() {
if (!message.isEmpty()) {
Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG);
message = "";
toast.show();
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/BetterPopupWindow.java
================================================
package com.liato.bankdroid;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.PopupWindow;
/**
* This class does most of the work of wrapping the {@link PopupWindow} so it's simpler to use.
*
* @author qberticus
*/
public class BetterPopupWindow {
protected final ViewGroup parentView;
protected final View anchor;
private final PopupWindow window;
private final WindowManager windowManager;
private View root;
private Drawable background = null;
/**
* Create a BetterPopupWindow
*
* @param anchor the view that the BetterPopupWindow will be displaying 'from'
*/
public BetterPopupWindow(ViewGroup parentView, View anchor) {
this.anchor = anchor;
this.parentView = parentView;
this.window = new PopupWindow(anchor.getContext());
// when a touch even happens outside of the window
// make the window go away
this.window.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
BetterPopupWindow.this.window.dismiss();
return true;
}
return false;
}
});
this.windowManager = (WindowManager) this.anchor.getContext()
.getSystemService(Context.WINDOW_SERVICE);
onCreate();
}
/**
* Anything you want to have happen when created. Probably should create a view and setup the
* event listeners on
* child views.
*/
protected void onCreate() {
}
/**
* In case there is stuff to do right before displaying.
*/
protected void onShow() {
}
private void preShow() {
if (this.root == null) {
throw new IllegalStateException(
"setContentView was not called with a view to display.");
}
onShow();
if (this.background == null) {
this.window.setBackgroundDrawable(new BitmapDrawable());
} else {
this.window.setBackgroundDrawable(this.background);
}
// if using PopupWindow#setBackgroundDrawable this is the only values of the width and hight that make it work
// otherwise you need to set the background of the root viewgroup
// and set the popupwindow background to an empty BitmapDrawable
this.window.setWidth(WindowManager.LayoutParams.FILL_PARENT);
this.window.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
this.window.setTouchable(true);
this.window.setFocusable(true);
this.window.setOutsideTouchable(true);
this.window.setContentView(this.root);
}
public void setBackgroundDrawable(Drawable background) {
this.background = background;
}
/**
* Sets the content view. Probably should be called from {@link onCreate}
*
* @param root the view the popup will display
*/
public void setContentView(View root) {
this.root = root;
this.window.setContentView(root);
}
/**
* Will inflate and set the view from a resource id
*/
public void setContentView(int layoutResID) {
LayoutInflater inflator =
(LayoutInflater) this.anchor.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.setContentView(inflator.inflate(layoutResID, null));
}
/**
* If you want to do anything when {@link dismiss} is called
*/
public void setOnDismissListener(PopupWindow.OnDismissListener listener) {
this.window.setOnDismissListener(listener);
}
/**
* Displays like a popdown menu from the anchor view
*/
public void showLikePopDownMenu() {
this.showLikePopDownMenu(0, 0);
}
/**
* Displays like a popdown menu from the anchor view.
*
* @param xOffset offset in X direction
* @param yOffset offset in Y direction
*/
public void showLikePopDownMenu(int xOffset, int yOffset) {
this.preShow();
this.window.setAnimationStyle(R.style.Animations_PopDownMenu);
this.window.showAsDropDown(this.anchor, xOffset, yOffset);
}
/**
* Displays like a QuickAction from the anchor view.
*/
public void showLikeQuickAction() {
this.showLikeQuickAction(0, 0);
}
/**
* Displays like a QuickAction from the anchor view.
*
* @param xOffset offset in the X direction
* @param yOffset offset in the Y direction
*/
public void showLikeQuickAction(int xOffset, int yOffset) {
this.preShow();
this.window.setAnimationStyle(R.style.Animations_GrowFromBottom);
int[] location = new int[2];
this.anchor.getLocationOnScreen(location);
Rect anchorRect =
new Rect(location[0], location[1], location[0] + this.anchor.getWidth(), location[1]
+ this.anchor.getHeight());
this.root.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int rootWidth = this.root.getMeasuredWidth();
int rootHeight = this.root.getMeasuredHeight();
int screenWidth = this.windowManager.getDefaultDisplay().getWidth();
int screenHeight = this.windowManager.getDefaultDisplay().getHeight();
int xPos = ((screenWidth - rootWidth) / 2) + xOffset;
int yPos = anchorRect.top - rootHeight + yOffset;
// display on bottom
if (rootHeight > anchorRect.top) {
yPos = anchorRect.bottom - yOffset;
this.window.setAnimationStyle(R.style.Animations_GrowFromTop);
this.root.findViewById(R.id.layPopupCont).setBackgroundResource(R.drawable.popup_bg_up);
}
this.window.showAtLocation(this.anchor, Gravity.NO_GRAVITY, xPos, yPos);
}
public void dismiss() {
this.window.dismiss();
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/DataRetrieverTask.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.appwidget.AutoRefreshService;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.banking.exceptions.BankChoiceException;
import com.liato.bankdroid.banking.exceptions.BankException;
import com.liato.bankdroid.banking.exceptions.LoginException;
import com.liato.bankdroid.db.DBAdapter;
import com.liato.bankdroid.utils.LoggingUtils;
import com.liato.bankdroid.utils.NetworkUtils;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import timber.log.Timber;
public class DataRetrieverTask extends AsyncTask<String, String, Void> {
private final ProgressDialog dialog;
private final MainActivity parent;
private final Resources res;
private ArrayList<String> errors;
private long bankId = -1;
public DataRetrieverTask(final MainActivity parent) {
this.parent = parent;
this.res = parent.getResources();
this.dialog = new ProgressDialog(parent);
}
public DataRetrieverTask(final MainActivity parent, final long bankId) {
this(parent);
this.bankId = bankId;
}
@Override
protected void onPreExecute() {
getDialog().setMessage(res.getText(R.string.updating_account_balance)
+ "\n ");
getDialog().setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
getDialog().setCancelable(false);
getDialog().show();
}
@NonNull
protected ProgressDialog getDialog() {
return this.dialog;
}
@Nullable
protected Bank getBankFromDb(long bankId, Context parent) {
return BankFactory.bankFromDb(bankId, parent, true);
}
protected List<Bank> getBanksFromDb(Context parent) {
return BankFactory.banksFromDb(parent, true);
}
protected void saveBank(Bank bank, Context context) {
DBAdapter.save(bank, parent);
}
protected void publishProgress(int zeroBasedBankNumber, @Nullable Bank bank) {
String text = "";
if (bank != null) {
text = bank.getName() + " (" + bank.getUsername() + ")";
}
publishProgress(Integer.toString(zeroBasedBankNumber), text);
}
protected boolean isContentProviderEnabled() {
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(parent);
return prefs.getBoolean("content_provider_enabled", false);
}
@Override
protected Void doInBackground(final String... args) {
errors = new ArrayList<>();
List<Bank> banks;
if (bankId != -1) {
banks = new ArrayList<>();
banks.add(getBankFromDb(bankId, parent));
} else {
banks = getBanksFromDb(parent);
}
getDialog().setMax(banks.size());
int i = 0;
for (final Bank bank : banks) {
publishProgress(i, bank);
if (isListingAllBanks() && bank.isDisabled()) {
LoggingUtils.logDisabledBank(bank);
continue;
}
try {
bank.update();
bank.updateAllTransactions();
bank.closeConnection();
saveBank(bank, parent);
i++;
LoggingUtils.logBankUpdate(bank, true);
} catch (final BankException e) {
this.errors.add(bank.getName() + " (" + bank.getUsername()
+ ")");
Timber.e(e, "Could not update bank.");
} catch (final LoginException e) {
this.errors.add(bank.getName() + " (" + bank.getUsername()
+ ")");
DBAdapter.disable(bank, parent);
} catch (BankChoiceException e) {
this.errors.add(bank.getName() + " (" + bank.getUsername()
+ ")");
} catch (IOException e) {
this.errors.add(bank.getName() + " (" + bank.getUsername()
+ ")");
if (NetworkUtils.isInternetAvailable()) {
Timber.e(e, "IO error talking to bank");
}
}
if (isContentProviderEnabled()) {
final ArrayList<Account> accounts = bank.getAccounts();
for (final Account account : accounts) {
AutoRefreshService.broadcastTransactionUpdate(parent,
bank.getDbId(), account.getId());
}
}
}
publishProgress(i, null);
return null;
}
private boolean isListingAllBanks() {
return bankId == -1;
}
@Override
protected void onProgressUpdate(final String... args) {
getDialog().setProgress(Integer.parseInt(args[0]));
getDialog().setMessage(res.getText(R.string.updating_account_balance)
+ "\n" + args[1]);
}
@Override
protected void onPostExecute(final Void unused) {
parent.refreshView();
AutoRefreshService.sendWidgetRefresh(parent);
ActivityHelper.dismissDialog(getDialog());
if ((this.errors != null) && !this.errors.isEmpty()) {
final StringBuilder errormsg = new StringBuilder();
errormsg.append(res.getText(R.string.accounts_were_not_updated))
.append(":\n");
for (final String err : errors) {
errormsg.append(err);
errormsg.append("\n");
}
final AlertDialog.Builder builder = new AlertDialog.Builder(parent);
builder.setMessage(errormsg.toString())
.setTitle(res.getText(R.string.errors_when_updating))
.setIcon(android.R.drawable.ic_dialog_alert)
.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
final DialogInterface dialog,
final int id) {
dialog.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/LockableActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.lockpattern.ConfirmLockPattern;
import com.liato.bankdroid.lockpattern.LockPatternUtils;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.WindowManager;
public class LockableActivity extends ActionBarActivity {
private static final int PATTERNLOCK_UNLOCK = 42;
protected boolean mSkipLockOnce = false;
private SharedPreferences mPrefs;
private LockPatternUtils mLockPatternUtils;
private boolean mHasLoaded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mLockPatternUtils = new LockPatternUtils(this);
mLockPatternUtils
.setVisiblePatternEnabled(mPrefs.getBoolean("patternlock_visible_pattern", true));
mLockPatternUtils.setTactileFeedbackEnabled(
mPrefs.getBoolean("patternlock_tactile_feedback", false));
// requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
if (shouldShowActionBar()) {
setSupportActionBar(toolbar);
toolbar.setLogo(R.drawable.ic_launcher);
} else {
toolbar.setVisibility(View.GONE);
}
}
// getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
// View titlebar = findViewById(R.id.layTitle);
// mTitlebarButtons = (LinearLayout)titlebar.findViewById(R.id.layTitleButtons);
// mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//
// mHomeButton = (ImageView)titlebar.findViewById(R.id.imgTitle);
// mHomeButtonCont = titlebar.findViewById(R.id.layLogoContainer);
// mProgressBar = (ProgressBar)titlebar.findViewById(R.id.progressBar);
// OnClickListener listener = new View.OnClickListener() {
// public void onClick(View v) {
// Intent intent = new Intent(LockableActivity.this, MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
// LockableActivity.this.finish();
// }
// };
// mHomeButton.setOnClickListener(listener);
// mHomeButtonCont.setOnClickListener(listener);
// setHomeButtonEnabled(true);
}
// protected void addTitleButton(int imageResourceId, String tag, OnClickListener listener) {
// View child = mInflater.inflate(R.layout.title_item, mTitlebarButtons, false);
// ImageButton button = (ImageButton)child.findViewById(R.id.imgItemIcon);
// button.setImageResource(imageResourceId);
// button.setTag(tag);
// child.setTag("item_"+tag);
// button.setOnClickListener(listener);
// mTitlebarButtons.addView(child);
// }
//
// protected void hideTitleButton(String tag) {
// View v = mTitlebarButtons.findViewWithTag("item_"+tag);
// if (v != null) {
// v.setVisibility(View.GONE);
// }
// }
//
// protected void showTitleButton(String tag) {
// View v = mTitlebarButtons.findViewWithTag("item_"+tag);
// if (v != null) {
// v.setVisibility(View.VISIBLE);
// }
// }
//
// protected void setTitleButtonEnabled(String tag, boolean enabled) {
// View v = mTitlebarButtons.findViewWithTag("item_"+tag);
// if (v != null) {
// ImageButton button = (ImageButton)v.findViewById(R.id.imgItemIcon);
// if (button != null) {
// v.setEnabled(enabled);
// v.setFocusable(enabled);
// button.setEnabled(enabled);
// button.setAlpha(enabled ? 255 : 50);
// }
// }
// }
//
// protected void setHomeButtonEnabled(boolean enabled) {
// mHomeButtonCont.setFocusable(enabled);
// mHomeButtonCont.setClickable(enabled);
// mHomeButton.setFocusable(enabled);
// mHomeButton.setClickable(enabled);
// }
//
// protected void setProgressBar(int progress) {
// mProgressBar.setProgress(progress);
// }
//
// protected void showProgressBar() {
// mProgressBar.setVisibility(View.VISIBLE);
// }
//
// protected void hideProgressBar() {
// AlphaAnimation animation = new AlphaAnimation(1, 0);
// animation.setDuration(350);
// animation.setAnimationListener(new AnimationListener() {
// @Override
// public void onAnimationEnd(Animation animation) {
// mProgressBar.setVisibility(View.GONE);
// }
//
// @Override
// public void onAnimationRepeat(Animation animation) {}
//
// @Override
// public void onAnimationStart(Animation animation) {}
// });
// mProgressBar.startAnimation(animation);
// }
@Override
protected void onPause() {
super.onPause();
// Don't do anything if no lock pattern is set
if (!mLockPatternUtils.isLockPatternEnabled()) {
return;
}
/*
Save the current time If a lock pattern has been set
If this activity never loaded set the lock time to
10 seconds ago.
This is to prevent the following scenario:
1. Activity Starts
2. Lock screen is displayed
3. User presses the home button
4. "lock time" is set in onPause to when the home button was pressed
5. Activity is started again within 2 seconds and no lock screen is shown this time.
*/
if (mHasLoaded) {
writeLockTime();
} else {
writeLockTime(SystemClock.elapsedRealtime() - 10000);
}
}
@Override
protected void onResume() {
super.onResume();
// Don't do anything if no lock pattern is set
if (!mLockPatternUtils.isLockPatternEnabled()) {
return;
}
if (mSkipLockOnce) {
mSkipLockOnce = false;
return;
}
// If a lock pattern is set we need to check the time for when the last
// activity was open. If it's been more than two seconds the user
// will have to enter the lock pattern to continue.
long currentTime = SystemClock.elapsedRealtime();
long lockedAt = mPrefs.getLong("locked_at", currentTime - 10000);
long timedif = Math.abs(currentTime - lockedAt);
if (timedif > 2000) {
mHasLoaded = false;
launchPatternLock();
} else {
mHasLoaded = true;
}
}
private void launchPatternLock() {
Intent intent = new Intent(this, ConfirmLockPattern.class);
intent.putExtra(ConfirmLockPattern.HEADER_TEXT, getText(R.string.patternlock_header));
startActivityForResult(intent, PATTERNLOCK_UNLOCK);
}
private void writeLockTime() {
writeLockTime(SystemClock.elapsedRealtime());
}
private void writeLockTime(long time) {
Editor editor = mPrefs.edit();
editor.putLong("locked_at", time);
editor.apply();
}
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PATTERNLOCK_UNLOCK) {
if (resultCode == RESULT_OK) {
writeLockTime();
} else {
launchPatternLock();
}
}
}
protected void skipLockOnce() {
mSkipLockOnce = true;
}
@Override
public boolean onCreateThumbnail(Bitmap outBitmap, Canvas canvas) {
View decorview = getWindow().getDecorView();
if (decorview == null) {
return true;
}
final int vw = decorview.getWidth();
final int vh = decorview.getHeight();
final int dw = outBitmap.getWidth();
final int dh = outBitmap.getHeight();
Bitmap bluredBitmap = Bitmap
.createBitmap(outBitmap.getWidth(), outBitmap.getHeight(), outBitmap.getConfig());
Canvas c = new Canvas(bluredBitmap);
c.save();
c.scale(((float) dw) / vw, ((float) dh) / vh);
decorview.draw(c);
c.restore();
canvas.drawBitmap(pixelate(bluredBitmap, 5), 0, 0, null);
Bitmap lockbitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lock);
Paint p = new Paint();
p.setAntiAlias(true);
p.setDither(true);
p.setFilterBitmap(true);
canvas.drawBitmap(lockbitmap, null,
new RectF(dw * 0.25f, dh * 0.25f, dw * 0.75f, dh * 0.75f), p);
return true;
}
private Bitmap pixelate(Bitmap bitmap, int size) {
Bitmap bm = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
Canvas c = new Canvas(bm);
Paint p = new Paint();
p.setStyle(Style.FILL);
int w = bm.getWidth();
int h = bm.getHeight();
int[] pixels = new int[w * h];
bitmap.getPixels(pixels, 0, w, 0, 0, w, h);
for (int i = 0; i < h; i = i + size) {
for (int j = 0; j < w; j = j + size) {
int a = 0;
int r = 0;
int g = 0;
int b = 0;
int pc = 0;
for (int k = 0; k < size; k++) {
for (int l = 0; l < size; l++) {
int pxp = (i + k) * w + j + l;
if (pxp < pixels.length) {
int pixel = pixels[pxp];
a += Color.alpha(pixel);
r += Color.red(pixel);
g += Color.green(pixel);
b += Color.blue(pixel);
pc++;
}
}
}
a /= pc;
r /= pc;
g /= pc;
b /= pc;
p.setColor(Color.argb(a, r, g, b));
c.drawRect(j, i, j + size, i + size, p);
}
}
return bm;
}
public boolean shouldShowActionBar() {
return true;
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/LockablePreferenceActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.lockpattern.ConfirmLockPattern;
import com.liato.bankdroid.lockpattern.LockPatternUtils;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.WindowManager;
public class LockablePreferenceActivity extends PreferenceActivity {
private static final int PATTERNLOCK_UNLOCK = 42;
private SharedPreferences mPrefs;
private LockPatternUtils mLockPatternUtils;
private boolean mHasLoaded = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mLockPatternUtils = new LockPatternUtils(this);
mLockPatternUtils
.setVisiblePatternEnabled(mPrefs.getBoolean("patternlock_visible_pattern", true));
mLockPatternUtils.setTactileFeedbackEnabled(
mPrefs.getBoolean("patternlock_tactile_feedback", false));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@Override
protected void onPause() {
super.onPause();
// Don't do anything if no lock pattern is set
if (!mLockPatternUtils.isLockPatternEnabled()) {
return;
}
/*
Save the current time If a lock pattern has been set
If this activity never loaded set the lock time to
10 seconds ago.
This is to prevent the following scenario:
1. Activity Starts
2. Lock screen is displayed
3. User presses the home button
4. "lock time" is set in onPause to when the home button was pressed
5. Activity is started again within 2 seconds and no lock screen is shown this time.
*/
if (mHasLoaded) {
writeLockTime();
} else {
writeLockTime(SystemClock.elapsedRealtime() - 10000);
}
}
@Override
protected void onResume() {
super.onResume();
// Don't do anything if lock pattern is not set
if (!mLockPatternUtils.isLockPatternEnabled() || !isLockEnabled()) {
return;
}
// If a lock pattern is set we need to check the time for when the last
// activity was open. If it's been more than two seconds the user
// will have to enter the lock pattern to continue.
long currentTime = SystemClock.elapsedRealtime();
long lockedAt = mPrefs.getLong("locked_at", currentTime - 10000);
long timedif = Math.abs(currentTime - lockedAt);
if (timedif > 2000) {
launchPatternLock();
} else {
mHasLoaded = true;
}
}
private void launchPatternLock() {
Intent intent = new Intent(this, ConfirmLockPattern.class);
intent.putExtra(ConfirmLockPattern.HEADER_TEXT, getText(R.string.patternlock_header));
startActivityForResult(intent, PATTERNLOCK_UNLOCK);
}
private void writeLockTime() {
writeLockTime(SystemClock.elapsedRealtime());
}
private void writeLockTime(long time) {
Editor editor = mPrefs.edit();
editor.putLong("locked_at", time);
editor.apply();
}
protected boolean isLockEnabled() {
return mPrefs.getBoolean("lock_enabled", true);
}
protected void setLockEnabled(boolean enabled) {
Editor editor = mPrefs.edit();
editor.putBoolean("lock_enabled", enabled);
editor.apply();
}
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PATTERNLOCK_UNLOCK) {
if (resultCode == RESULT_OK) {
writeLockTime();
} else {
launchPatternLock();
}
}
}
@Override
protected void onStop() {
super.onStop();
setLockEnabled(true);
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/MainActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.adapters.AccountsAdapter;
import com.liato.bankdroid.appwidget.AutoRefreshService;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.db.DBAdapter;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class MainActivity extends LockableActivity {
@InjectView(R.id.txtAccountsDesc)
TextView mAccountsDescription;
protected static boolean showHidden = false;
private Bank selectedBank = null;
private static Account selectedAccount = null;
private final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
refreshView();
}
};
protected AccountsAdapter adapter = null;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PairApplicationsActivity.initialSetupApiKey(this);
setContentView(R.layout.main);
ButterKnife.inject(this);
adapter = new AccountsAdapter(this, showHidden);
final ArrayList<Bank> banks = new ArrayList<>();
adapter.setGroups(banks);
final ListView lv = (ListView) findViewById(R.id.lstAccountsList);
lv.setAdapter(adapter);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(final AdapterView<?> parent, final View view,
final int position, final long id) {
if (adapter.getItem(position) instanceof Account) {
selectedAccount = (Account) adapter.getItem(position);
final PopupMenuAccount pmenu = new PopupMenuAccount(parent, view, MainActivity.this);
pmenu.showLikeQuickAction(0, 12);
return true;
} else if (adapter.getItem(position) instanceof Bank) {
selectedBank = (Bank) adapter.getItem(position);
selectedBank.toggleHideAccounts();
DBAdapter.save(selectedBank, MainActivity.this);
refreshView();
return true;
}
return false;
}
});
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(final AdapterView<?> parent, final View view,
final int position, final long id) {
if (adapter.getItem(position) instanceof Bank) {
selectedBank = (Bank) adapter.getItem(position);
final PopupMenuBank pmenu = new PopupMenuBank(parent, view, MainActivity.this);
pmenu.showLikeQuickAction(0, 12);
} else {
final Intent intent = new Intent(MainActivity.this, TransactionsActivity.class);
final Account account = (Account) adapter.getItem(position);
intent.putExtra("account", account.getId());
intent.putExtra("bank", account.getBankDbId());
MainActivity.this.startActivity(intent);
}
}
});
final Bundle extras = getIntent().getExtras();
// Clicking on widgets opens the transactions history through MainActivity so that
// the user can back out to the main window.
if (AutoRefreshService.ACTION_MAIN_SHOW_TRANSACTIONS.equals(getIntent().getAction())) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("widget_opens_transactions", true)) {
skipLockOnce();
final Intent intent = new Intent(this, TransactionsActivity.class);
intent.putExtra("account", extras.getString("account"));
intent.putExtra("bank", extras.getLong("bank"));
startActivity(intent);
}
}
((BankdroidApplication) getApplication()).showAndDeleteApplicationMessage();
}
@Override
public void onResume() {
super.onResume();
// Receive refresh Intent from AutoRefreshService and refresh the main view if changes
// have been detected.
registerReceiver(receiver, new IntentFilter(AutoRefreshService.BROADCAST_MAIN_REFRESH));
refreshView();
}
public void refreshView() {
final ArrayList<Bank> banks = BankFactory.banksFromDb(this, true);
mAccountsDescription.setVisibility(banks.isEmpty() ? View.VISIBLE : View.GONE);
adapter.setShowHidden(showHidden);
adapter.setGroups(banks);
adapter.notifyDataSetChanged();
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
final MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
protected Dialog onCreateDialog(final int id) {
super.onCreateDialog(id);
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.about);
dialog.setTitle(getString(R.string.about));
String version = BuildConfig.VERSION_NAME;
((TextView) dialog.findViewById(R.id.txtVersion))
.setText(getText(R.string.version).toString().replace("$version", version));
return dialog;
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
Intent intent;
switch (item.getItemId()) {
case R.id.action_toggle_hidden:
showHidden = !showHidden;
item.setTitle(showHidden ? R.string.menu_hide_hidden : R.string.menu_show_hidden);
refreshView();
return true;
case R.id.action_settings:
intent = new Intent(this, SettingsActivity.class);
this.startActivity(intent);
//Helpers.setActivityAnimation(this, R.anim.zoom_enter, R.anim.zoom_exit);
return true;
case R.id.action_about:
intent = new Intent(this, AboutActivity.class);
startActivity(intent);
return true;
case R.id.action_refresh:
new DataRetrieverTask(MainActivity.this).execute();
return true;
case R.id.action_add:
final Intent intentAccount = new Intent(MainActivity.this, BankEditActivity.class);
startActivity(intentAccount);
return true;
}
return false;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
/**
* Extends {@link BetterPopupWindow}
* <p>
* Overrides onCreate to create the view and register the button listeners
*
* @author qbert
*/
private static class PopupMenuBank extends BetterPopupWindow implements OnClickListener {
MainActivity parent = null;
public PopupMenuBank(final ViewGroup parentView, final View anchor, final MainActivity parent) {
super(parentView, anchor);
this.parent = parent;
}
@Override
protected void onCreate() {
// inflate layout
final LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup_bank, this.parentView, false);
final Button btnHide = (Button) root.findViewById(R.id.btnHide);
final Button btnUnhide = (Button) root.findViewById(R.id.btnUnhide);
final Button btnWWW = (Button) root.findViewById(R.id.btnWWW);
if (parent.selectedBank.getHideAccounts()) {
btnHide.setVisibility(View.GONE);
btnUnhide.setVisibility(View.VISIBLE);
btnUnhide.setOnClickListener(this);
} else {
btnHide.setVisibility(View.VISIBLE);
btnUnhide.setVisibility(View.GONE);
btnHide.setOnClickListener(this);
}
if (parent.selectedBank.isWebViewEnabled()) {
btnWWW.setOnClickListener(this);
} else {
btnWWW.setVisibility(View.GONE);
}
root.findViewById(R.id.btnRefresh).setOnClickListener(this);
root.findViewById(R.id.btnEdit).setOnClickListener(this);
root.findViewById(R.id.btnRemove).setOnClickListener(this);
this.setContentView(root);
}
@Override
public void onClick(final View v) {
final Context context = this.anchor.getContext();
final int id = v.getId();
switch (id) {
case R.id.btnHide:
case R.id.btnUnhide:
this.dismiss();
parent.selectedBank.toggleHideAccounts();
DBAdapter.save(parent.selectedBank, context);
parent.refreshView();
return;
case R.id.btnWWW:
if (parent.selectedBank != null && parent.selectedBank.isWebViewEnabled()) {
//Uri uri = Uri.parse(selectedBank.getURL());
//Intent intent = new Intent(Intent.ACTION_VIEW, uri);
final Intent intent = new Intent(context, WebViewActivity.class);
intent.putExtra("bankid", parent.selectedBank.getDbId());
context.startActivity(intent);
}
this.dismiss();
return;
case R.id.btnEdit:
final Intent intent = new Intent(context, BankEditActivity.class);
intent.putExtra("id", parent.selectedBank.getDbId());
context.startActivity(intent);
this.dismiss();
return;
case R.id.btnRefresh:
this.dismiss();
new DataRetrieverTask(parent, parent.selectedBank.getDbId()).execute();
return;
case R.id.btnRemove:
this.dismiss();
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
//builder.setMessage(getText(R.string.passwords_mismatch)).setTitle(getText(R.string.passwords_mismatch_title))
builder.setMessage(context.getText(R.string.remove_bank_msg))
.setTitle(context.getText(R.string.remove_bank_title))
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(context.getText(R.string.yes),
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog,
final int id) {
final DBAdapter db = new DBAdapter(context);
db.deleteBank(parent.selectedBank.getDbId());
dialog.cancel();
parent.refreshView();
}
})
.setNegativeButton(context.getText(R.string.no),
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog,
final int id) {
dialog.cancel();
}
});
final AlertDialog alert = builder.create();
alert.show();
return;
}
}
}
/**
* Extends {@link BetterPopupWindow}
* <p>
* Overrides onCreate to create the view and register the button listeners
*
* @author qbert
*/
private static class PopupMenuAccount extends BetterPopupWindow implements OnClickListener {
MainActivity parent = null;
public PopupMenuAccount(final ViewGroup parentView, final View anchor, final MainActivity parent) {
super(parentView, anchor);
this.parent = parent;
}
@Override
protected void onCreate() {
final LayoutInflater inflater =
(LayoutInflater) this.anchor.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.popup_account, this.parentView, false);
final Button btnHide = (Button) root.findViewById(R.id.btnHide);
final Button btnUnhide = (Button) root.findViewById(R.id.btnUnhide);
final Button btnDisableNotifications = (Button) root
.findViewById(R.id.btnDisableNotifications);
final Button btnEnableNotifications = (Button) root
.findViewById(R.id.btnEnableNotifications);
if (selectedAccount.isHidden()) {
btnHide.setVisibility(View.GONE);
btnUnhide.setVisibility(View.VISIBLE);
btnUnhide.setOnClickListener(this);
} else {
btnHide.setVisibility(View.VISIBLE);
btnUnhide.setVisibility(View.GONE);
btnHide.setOnClickListener(this);
}
if (selectedAccount.isNotify()) {
btnDisableNotifications.setVisibility(View.VISIBLE);
btnDisableNotifications.setOnClickListener(this);
btnEnableNotifications.setVisibility(View.GONE);
} else {
btnDisableNotifications.setVisibility(View.GONE);
btnEnableNotifications.setOnClickListener(this);
btnEnableNotifications.setVisibility(View.VISIBLE);
}
this.setContentView(root);
}
@Override
public void onClick(final View v) {
final int id = v.getId();
switch (id) {
case R.id.btnHide:
this.dismiss();
selectedAccount.setHidden(true);
DBAdapter.save(selectedAccount.getBank(), parent);
parent.refreshView();
return;
case R.id.btnUnhide:
this.dismiss();
selectedAccount.setHidden(false);
DBAdapter.save(selectedAccount.getBank(), parent);
parent.refreshView();
return;
case R.id.btnEnableNotifications:
this.dismiss();
selectedAccount.setNotify(true);
DBAdapter.save(selectedAccount.getBank(), parent);
parent.refreshView();
return;
case R.id.btnDisableNotifications:
this.dismiss();
selectedAccount.setNotify(false);
DBAdapter.save(selectedAccount.getBank(), parent);
parent.refreshView();
return;
}
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/PairApplicationsActivity.java
================================================
/**
* Copyright 2011 Magnus Andersson
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.provider.BankTransactionsProvider;
import com.liato.bankdroid.provider.IBankTransactionsProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import timber.log.Timber;
/**
* @author Magnus Andersson
* @since 8 jun 2011
*/
public class PairApplicationsActivity extends LockableActivity {
private static final String PAIR_APP_NAME = "com.liato.bankdroid.PAIR_APP_NAME";
public static void initialSetupApiKey(Context ctx) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
final String apiKey = prefs.getString("content_provider_api_key", "");
if (apiKey.equals("")) {
final SharedPreferences.Editor editor = prefs.edit();
// Create a random HEX String
final String genKey = Long.toHexString(Double.doubleToLongBits(Math.random()));
// Commit to preferences
editor.putString("content_provider_api_key", genKey.toUpperCase());
editor.apply();
}
}
/** {@inheritDoc} */
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pair_applications_layout);
// setHomeButtonEnabled(false);
Bundle bundle = getIntent().getExtras();
if (bundle.containsKey(PAIR_APP_NAME)) {
String appName = bundle.getString(PAIR_APP_NAME);
ImageView img = (ImageView) findViewById(R.id.imageView1);
// Note that we used to load this dynamically, but Ekonomipuls was the
// only user ever. Doing it statically like this helps Android Lint
// know that the logo in question is still in use.
Drawable d = getResources().getDrawable(R.drawable.applogo_ekonomipuls);
img.setImageDrawable(d);
img.requestLayout();
// Change application name
TextView appNameView = (TextView) findViewById(R.id.app_name);
appNameView.setText(appName);
} else {
Timber.w("Unknown application");
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if (keyCode == KeyEvent.KEYCODE_BACK) {
setResult(RESULT_CANCELED);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void cancelPairing(final View v) {
setResult(RESULT_CANCELED);
finish();
}
public void confirmPairing(final View v) {
Intent intent = this.getIntent();
Context ctx = getBaseContext();
// Make sure sharing is enabled
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(ctx);
Editor editor = pref.edit();
editor.putBoolean("content_provider_enabled", true);
editor.apply();
String apiKey;
try {
apiKey = BankTransactionsProvider.getApiKey(ctx);
} catch (IllegalArgumentException e) {
//Initialize API key if it is not set
initialSetupApiKey(ctx);
apiKey = BankTransactionsProvider.getApiKey(ctx);
}
intent.putExtra(IBankTransactionsProvider.API_KEY, apiKey);
setResult(RESULT_OK, intent);
finish();
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/SettingsActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.appwidget.AutoRefreshService;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.banks.TestBank;
import com.liato.bankdroid.banking.banks.nordea.Nordea;
import com.liato.bankdroid.lockpattern.ChooseLockPattern;
import com.liato.bankdroid.lockpattern.ConfirmLockPattern;
import com.liato.bankdroid.lockpattern.LockPatternUtils;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
import android.widget.Toast;
import java.math.BigDecimal;
import timber.log.Timber;
public class SettingsActivity extends LockablePreferenceActivity
implements OnPreferenceClickListener, OnPreferenceChangeListener {
private final static int DISABLE_LOCKPATTERN = 1;
private final static int ENABLE_LOCKPATTERN = 2;
private final static int CHANGE_LOCKPATTERN = 3;
private LockPatternUtils mLockPatternUtils;
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLockPatternUtils = new LockPatternUtils(this);
addPreferencesFromResource(R.xml.settings);
getWindow().setBackgroundDrawableResource(R.drawable.background_repeat);
(findPreference("patternlock_change")).setOnPreferenceClickListener(this);
(findPreference("remotenotifier_help")).setOnPreferenceClickListener(this);
(findPreference("openwatch_help")).setOnPreferenceClickListener(this);
(findPreference("liveview_help")).setOnPreferenceClickListener(this);
(findPreference("account_types_screen")).setOnPreferenceClickListener(this);
(findPreference("remotenotifier_screen")).setOnPreferenceClickListener(this);
(findPreference("openwatch_screen")).setOnPreferenceClickListener(this);
(findPreference("liveview_screen")).setOnPreferenceClickListener(this);
(findPreference("notification_sound")).setOnPreferenceClickListener(this);
(findPreference("test_notification")).setOnPreferenceClickListener(this);
(findPreference("notify_min_delta")).setOnPreferenceChangeListener(this);
final CheckBoxPreference patternLock = ((CheckBoxPreference) findPreference(
"patternlock_enabled"));
patternLock.setOnPreferenceClickListener(this);
// Check the pattern lock check box if the lock pattern is enabled
patternLock.setChecked(mLockPatternUtils.isLockPatternEnabled());
}
@Override
public boolean onPreferenceClick(final Preference pref) {
final String prefKey = pref.getKey();
if ("account_types_screen".equals(prefKey) ||
"remotenotifier_screen".equals(prefKey) ||
"openwatch_screen".equals(prefKey) ||
"liveview_screen".equals(prefKey)) {
((PreferenceScreen) pref).getDialog().getWindow()
.setBackgroundDrawableResource(R.drawable.background_repeat);
return false;
}
if ("notification_sound".equals(prefKey)) {
return false;
}
if ("patternlock_enabled".equals(prefKey)) {
this.setLockEnabled(false);
if (mLockPatternUtils.isLockPatternEnabled()) {
// The user is trying to disable the lock pattern,
// only disable if the user knows the pattern.
startActivityForResult(new Intent(this, ConfirmLockPattern.class),
DISABLE_LOCKPATTERN);
return true;
} else {
// No lock pattern has been set yet, let the user choose a new one.
startActivityForResult(new Intent(this, ChooseLockPattern.class),
ENABLE_LOCKPATTERN);
return true;
}
} else if ("patternlock_change".equals(prefKey)) {
this.setLockEnabled(false);
startActivityForResult(new Intent(this, ChooseLockPattern.class), CHANGE_LOCKPATTERN);
return true;
} else if ("remotenotifier_help".equals(prefKey)) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://code.google.com/p/android-notifier/")));
return true;
} else if ("openwatch_help".equals(prefKey)) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://forum.xda-developers.com/showthread.php?t=554551")));
return true;
} else if ("liveview_help".equals(prefKey)) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(
"http://www.sonyericsson.com/cws/products/accessories/overview/liveviewmicrodisplay")));
return true;
} else if ("test_notification".equals(prefKey)) {
Timber.d("Sending test notification.");
Account account1 = new Account("Personkonto", new BigDecimal(8351.00), "22");
Bank bank1 = new TestBank(this);
bank1.setDbid(21);
bank1.setCustomName("800416-0001");
Account account2 = new Account("Personkonto", new BigDecimal(8341.00), "23");
Bank bank2 = new Nordea(this);
bank2.setDbid(22);
bank2.setCustomName("800416-0002");
AutoRefreshService.showNotification(bank1, account1, new BigDecimal(-143.50), this);
AutoRefreshService.showNotification(bank2, account2, new BigDecimal(-123.50), this);
return true;
}
return false;
}
@Override
protected void onActivityResult(final int requestCode, final int resultCode,
final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == DISABLE_LOCKPATTERN) {
if (resultCode == RESULT_OK) {
mLockPatternUtils.setLockPatternEnabled(false);
mLockPatternUtils.saveLockPattern(null);
((CheckBoxPreference) findPreference("patternlock_enabled")).setChecked(false);
} else {
Timber.d("User was unable to disable pattern lock.");
}
} else if (requestCode == ENABLE_LOCKPATTERN) {
// User attempted to enable the pattern lock, toggle the checkbox.
((CheckBoxPreference) findPreference("patternlock_enabled"))
.setChecked(mLockPatternUtils.isLockPatternEnabled());
} else if (requestCode == CHANGE_LOCKPATTERN) {
// Don't do anything special
}
}
@Override
protected void onResume() {
super.onResume();
this.setLockEnabled(true);
}
@Override
protected void onPause() {
super.onPause();
StartupReceiver.setAlarm(this);
// Blur/unblur the widget balance
AutoRefreshService.sendWidgetRefresh(this);
}
@Override
public boolean onPreferenceChange(Preference pref, Object newValue) {
final String prefKey = pref.getKey();
if ("notify_min_delta".equals(prefKey)) {
Integer val;
try {
val = Integer.valueOf((String) newValue);
} catch (NumberFormatException e) {
val = null;
}
if (val != null && val >= 0) {
return true;
} else {
Toast.makeText(pref.getContext(),
String.format(pref.getContext().getString(R.string.invalid_integer),
newValue), Toast.LENGTH_LONG).show();
}
return false;
}
return false;
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/StartupReceiver.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.appwidget.AutoRefreshService;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.os.SystemClock;
import android.preference.PreferenceManager;
public class StartupReceiver extends BroadcastReceiver {
public static void setAlarm(Context context) {
PendingIntent alarmSender;
alarmSender = PendingIntent
.getService(context, 0, new Intent(context, AutoRefreshService.class),
PendingIntent.FLAG_UPDATE_CURRENT);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean autoUpdatesEnabled = prefs.getBoolean("autoupdates_enabled", true);
Integer refreshRate = Integer.parseInt(prefs.getString("refresh_rate", "0"));
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (!autoUpdatesEnabled) {
am.cancel(alarmSender);
} else {
long firstTime = SystemClock.elapsedRealtime();
int secondsInMinute = 60;
if (prefs.getBoolean("debug_mode", false) && prefs
.getBoolean("debug_refreshrate_in_seconds", false)) {
secondsInMinute = 1;
}
am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime + refreshRate * secondsInMinute * 1000,
refreshRate * secondsInMinute * 1000, alarmSender);
}
}
public static void updateNow(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean autoUpdatesEnabled = prefs.getBoolean("autoupdates_enabled", true);
long lastUpdate = prefs.getLong("autoupdates_last_update", 0);
Integer refreshRate = Integer.parseInt(prefs.getString("refresh_rate", "0"));
if (autoUpdatesEnabled
&& System.currentTimeMillis() - lastUpdate > refreshRate * 60 * 1000) {
context.startService(new Intent(context, AutoRefreshService.class));
}
}
@Override
public void onReceive(Context context, Intent intent) {
//Set alarms for auto updates on boot, package update, package replace and package new
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
updateNow(context);
} else {
setAlarm(context);
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/TimePreference.java
================================================
//This class based on tutorial found here https://github.com/commonsguy/cw-lunchlist/blob/master/19-Alarm/LunchList/src/apt/tutorial/TimePreference.java
package com.liato.bankdroid;
import android.content.Context;
import android.content.res.TypedArray;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TimePicker;
import timber.log.Timber;
public class TimePreference extends DialogPreference {
private int lastValue = 0;
private TimePicker picker = null;
public TimePreference(Context ctxt, AttributeSet attrs) {
super(ctxt, attrs);
setPositiveButtonText("Set");
setNegativeButtonText("Cancel");
}
@Override
protected View onCreateDialogView() {
picker = new TimePicker(getContext());
picker.setIs24HourView(true);
return picker;
}
@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);
picker.setCurrentHour(lastValue / 60);
picker.setCurrentMinute(lastValue % 60);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
lastValue = picker.getCurrentHour() * 60 + picker.getCurrentMinute();
if (callChangeListener(lastValue)) {
persistInt(lastValue);
}
}
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return (a.getInt(index, 0));
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
int val = 0;
if (restoreValue) {
val = getPersistedInt(val);
} else {
try {
val = Integer.parseInt(defaultValue.toString());
} catch (NumberFormatException e) {
Timber.e(e, "TimePreference's defaultValue is not a number");
}
}
lastValue = val;
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/TransactionsActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.banking.Transaction;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TransactionsActivity extends LockableActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transactions);
Bundle extras = getIntent().getExtras();
Bank bank = BankFactory.bankFromDb(extras.getLong("bank"), this, false);
if (bank == null) {
redirectToMain(getString(R.string.error_bank_not_found));
return;
}
Account account = BankFactory
.accountFromDb(this, extras.getLong("bank") + "_" + extras.getString("account"),
true);
if (account == null) {
redirectToMain(getString(R.string.error_account_not_found));
return;
}
TextView viewBankName = (TextView) findViewById(R.id.txtListitemAccountsGroupAccountname);
TextView viewAccountName = (TextView) findViewById(R.id.txtListitemAccountsGroupBankname);
TextView viewAccountBalance = (TextView) findViewById(R.id.txtListitemAccountsGroupTotal);
ImageView icon = (ImageView) findViewById(R.id.imgListitemAccountsGroup);
viewBankName.setText(bank.getDisplayName());
viewAccountName.setText(account.getName());
viewAccountBalance
.setText(Helpers.formatBalance(account.getBalance(), account.getCurrency()));
icon.setImageResource(bank.getImageResource());
List<Transaction> transactions = account.getTransactions();
if (bank.isDisabled()) {
findViewById(R.id.txtDisabledWarning).setVisibility(View.VISIBLE);
}
if (!transactions.isEmpty()) {
Collections.sort(transactions);
findViewById(R.id.txtTranDesc).setVisibility(View.GONE);
TransactionsAdapter adapter = new TransactionsAdapter(transactions);
ListView viewTransactionsList = (ListView) findViewById(R.id.lstTransactionsList);
viewTransactionsList.setAdapter(adapter);
}
findViewById(R.id.layBankHeader).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
protected void onResume() {
super.onResume();
}
private void redirectToMain(String errorMessage) {
final Intent intent = new Intent(this, MainActivity.class);
((BankdroidApplication) getApplicationContext())
.setApplicationMessage(errorMessage);
startActivity(intent);
}
private class TransactionsAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<Object> items = new ArrayList<>();
public TransactionsAdapter(List<Transaction> transactions) {
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (!transactions.isEmpty()) {
String date = transactions.get(0).getDate();
items.add(date);
for (Transaction transaction : transactions) {
if (!date.equals(transaction.getDate())) {
date = transaction.getDate();
items.add(date);
}
items.add(transaction);
}
}
}
public View newTransactionView(Transaction transaction, ViewGroup parent,
View convertView) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.transaction_item, parent, false);
}
((TextView) convertView.findViewById(R.id.txtTransaction))
.setText(transaction.getTransaction());
((TextView) convertView.findViewById(R.id.txtAmount)).setText(
Helpers.formatBalance(transaction.getAmount(), transaction.getCurrency()));
if (transaction.getAmount().signum() == 1) {
convertView.findViewById(R.id.imgColor)
.setBackgroundResource(R.drawable.transaction_positive);
} else {
convertView.findViewById(R.id.imgColor)
.setBackgroundResource(R.drawable.transaction_negative);
}
return convertView;
}
public View newDateView(String date, ViewGroup parent, View convertView) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.transaction_date, parent, false);
}
((TextView) convertView.findViewById(R.id.txtDate)).setText(date);
return convertView;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
@Nullable
public View getView(int position, View convertView, ViewGroup parent) {
Object item = getItem(position);
if (item == null) {
return null;
}
if (item instanceof Transaction) {
return newTransactionView((Transaction) item, parent, convertView);
} else if (item instanceof String) {
return newDateView((String) item, parent, convertView);
}
return null;
}
@Override
public boolean areAllItemsEnabled() {
return true;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
Object item = getItem(position);
if (item instanceof Transaction) {
return 0;
}
return 1;
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/WebViewActivity.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.Bank.SessionPackage;
import com.liato.bankdroid.banking.BankFactory;
import org.apache.commons.io.IOUtils;
import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.IOException;
import eu.nullbyte.android.urllib.Urllib;
import timber.log.Timber;
import static android.graphics.Color.WHITE;
public class WebViewActivity extends LockableActivity implements OnClickListener {
private WebView mWebView;
private boolean mFirstPageLoaded = false;
private Handler mMainThreadhandler = new Handler(Looper.getMainLooper());
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
//TODO
// this.addTitleButton(R.drawable.title_icon_back, "back", this);
// this.addTitleButton(R.drawable.title_icon_forward, "forward", this);
// this.addTitleButton(R.drawable.title_icon_refresh, "refresh", this);
// this.setTitleButtonEnabled("forward", false);
// this.setTitleButtonEnabled("back", false);
// this.setTitleButtonEnabled("refresh", false);
final CookieSyncManager csm = CookieSyncManager.createInstance(this);
mWebView = (WebView) findViewById(R.id.wvBank);
mWebView.setBackgroundColor(0);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setUserAgentString(Urllib.DEFAULT_USER_AGENT);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// activity.setProgressBar(progress);
if (progress == 100) {
Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
// activity.hideProgressBar();
if (mFirstPageLoaded) {
mWebView.setBackgroundColor(WHITE);
}
}
};
// Let the progress bar hit 100% before we hide it.
handler.postDelayed(runnable, 100);
} else if (mFirstPageLoaded) {
// activity.showProgressBar();
}
}
});
mWebView.setWebViewClient(new BankWebViewClient());
String preloader = "Error...";
try {
preloader = IOUtils.toString(getResources().openRawResource(R.raw.loading));
preloader = String.format(preloader,
"", // Javascript function
"" // HTML
);
} catch (NotFoundException | IOException e) {
Timber.w(e, "Error loading loading.html");
}
mWebView.loadDataWithBaseURL("what://is/this/i/dont/even", preloader, "text/html", "utf-8",
null);
Bundle extras = getIntent().getExtras();
final long bankId = extras.getLong("bankid", -1);
//final long bankId = -1;
if (bankId >= 0) {
Runnable generateLoginPage = new Runnable() {
public void run() {
Bank bank = BankFactory.bankFromDb(bankId, WebViewActivity.this, false);
final SessionPackage loginPackage = bank
.getSessionPackage(WebViewActivity.this);
final CookieStore cookieStore = loginPackage.getCookiestore();
mMainThreadhandler.post(new Runnable() {
@Override
public void run() {
if ((cookieStore != null) && !cookieStore.getCookies().isEmpty()) {
CookieManager cookieManager = CookieManager.getInstance();
CookieManager.getInstance().removeSessionCookie();
String cookieString;
for (Cookie cookie : cookieStore.getCookies()) {
cookieString = String.format("%s=%s;%spath=%s; domain=%s;",
cookie.getName(), cookie.getValue(),
cookie.getExpiryDate() == null ? ""
: "expires=" + cookie.getExpiryDate() + "; ",
cookie.getPath() == null ? "/" : cookie.getPath(),
cookie.getDomain());
cookieManager.setCookie(cookie.getDomain(), cookieString);
}
csm.sync();
}
mWebView.loadDataWithBaseURL("what://is/this/i/dont/even",
loginPackage.getHtml(), "text/html", "utf-8", null);
}
});
}
};
new Thread(generateLoginPage).start();
}
}
public void onResume() {
super.onResume();
}
//Handle the back key
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mWebView != null) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onClick(View v) {
String tag = (String) v.getTag();
if ("refresh".equals(tag)) {
mWebView.reload();
} else if ("back".equals(tag)) {
mWebView.goBack();
} else if ("forward".equals(tag)) {
mWebView.goForward();
}
}
// Make sure clicked links are loaded in our webview.
private class BankWebViewClient extends WebViewClient {
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
if (mFirstPageLoaded) {
handleHistoryChange();
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!mFirstPageLoaded) {
//This is the generated POST page.
if (url.startsWith("what:")) {
return;
}
//This is the first real page.
//Remove the generated page from history.
mWebView.clearHistory();
mFirstPageLoaded = true;
// activity.setTitleButtonEnabled("refresh", true);
return;
}
}
@Override
public void onFormResubmission(WebView view, Message dontResend,
Message resend) {
// TODO Auto-generated method stub
//super.onFormResubmission(view, dontResend, resend);
resend.sendToTarget();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void handleHistoryChange() {
// activity.setTitleButtonEnabled("back", mWebView.canGoBack());
// activity.setTitleButtonEnabled("forward", mWebView.canGoForward());
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/adapters/AccountsAdapter.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid.adapters;
import com.liato.bankdroid.Helpers;
import com.liato.bankdroid.R;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class AccountsAdapter extends BaseAdapter {
public final static int VIEWTYPE_BANK = 0;
public final static int VIEWTYPE_ACCOUNT = 1;
public final static int VIEWTYPE_EMPTY = 2;
private final SharedPreferences prefs;
private ArrayList<Bank> banks;
private final LayoutInflater inflater;
private boolean showHidden;
public AccountsAdapter(Context context, boolean showHidden) {
this.banks = new ArrayList<>();
inflater = LayoutInflater.from(context);
this.showHidden = showHidden;
prefs = PreferenceManager.getDefaultSharedPreferences(context);
}
public void setGroups(ArrayList<Bank> banks) {
this.banks = banks;
}
public void setShowHidden(boolean showHidden) {
this.showHidden = showHidden;
}
private View newBankView(Bank bank, ViewGroup parent, View convertView) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.listitem_accounts_group, parent, false);
}
ImageView icon = (ImageView) convertView.findViewById(R.id.imgListitemAccountsGroup);
((TextView) convertView.findViewById(R.id.txtListitemAccountsGroupAccountname))
.setText(bank.getDisplayName());
((TextView) convertView.findViewById(R.id.txtListitemAccountsGroupBankname))
.setText(bank.getName());
((TextView) convertView
.findViewById(R.id.txtListitemAccountsGroupTotal))
.setText(Helpers.formatBalance(bank.getBalance(),
bank.getCurrency(),
prefs.getBoolean("round_balance", false) || !bank.getDisplayDecimals(),
bank.getDecimalFormatter(),
false));
icon.setImageResource(bank.getImageResource());
View warning = convertView.findViewById(R.id.txtDisabledWarningX);
if (bank.isDisabled()) {
warning.setVisibility(View.VISIBLE);
} else {
warning.setVisibility(View.GONE);
}
return convertView;
}
private View newAccountView(Account account, ViewGroup parent, View convertView) {
if ((account.isHidden() && !showHidden) || account.getBank().getHideAccounts()) {
return convertView == null ? inflater.inflate(R.layout.empty, parent, false)
: convertView;
}
if (convertView == null) {
convertView = inflater.inflate(R.layout.listitem_accounts_item, parent, false);
}
convertView.findViewById(R.id.divider).setBackgroundColor(Color.argb(30, 255, 255, 255));
TextView txtAccountName = ((TextView) convertView
.findViewById(R.id.txtListitemAccountsItemAccountname));
TextView txtBalance = ((TextView) convertView
.findViewById(R.id.txtListitemAccountsItemBalance));
txtAccountName.setText(account.getName());
txtBalance.setText(Helpers.formatBalance(account.getBalance(), account.getCurrency()));
txtBalance
.setText(Helpers.formatBalance(account.getBalance(),
account.getCurrency(),
prefs.getBoolean("round_balance", false) || !account.getBank()
.getDisplayDecimals(),
account.getBank().getDecimalFormatter(),
false));
if (account.isHidden()) {
txtAccountName.setTextColor(Color.argb(255, 191, 191, 191));
txtBalance.setTextColor(Color.argb(255, 191, 191, 191));
} else {
txtAccountName.setTextColor(Color.WHITE);
txtBalance.setTextColor(Color.WHITE);
}
return convertView;
}
@Override
public int getCount() {
int c = 0;
for (Bank g : banks) {
if (g.getHideAccounts()) {
c++;
} else {
c += g.getAccounts().size() + 1;
}
}
return c;
}
@Override
@Nullable
public Object getItem(int position) {
if (banks.size() == 0) {
return null;
}
if (position == 0) {
return banks.get(0);
}
int i = 0;
for (Bank g : banks) {
if (position == i) {
return g;
} else if (g.getHideAccounts()) {
i++;
continue;
} else if (position <= (g.getAccounts().size() + i)) {
return g.getAccounts().get(position - i - 1);
}
i += g.getAccounts().size() + 1;
}
return (null);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
@Nullable
public View getView(int position, View convertView, ViewGroup parent) {
Object item = getItem(position);
if (item == null) {
return null;
}
if (item instanceof Bank) {
return newBankView((Bank)item, parent, convertView);
} else if (item instanceof Account) {
return newAccountView((Account)item, parent, convertView);
}
return null;
}
@Override
public boolean isEnabled(int position) {
if (getItemViewType(position) == VIEWTYPE_EMPTY) {
return false;
}
return true;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
Object item = getItem(position);
if (item instanceof Bank) {
return VIEWTYPE_BANK;
} else {
final Account account = (Account)item;
if ((account.isHidden() && !showHidden) ||
account.getBank().getHideAccounts()) {
return VIEWTYPE_EMPTY;
}
}
return VIEWTYPE_ACCOUNT;
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/appwidget/AutoRefreshService.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid.appwidget;
import com.liato.bankdroid.Helpers;
import com.liato.bankdroid.MainActivity;
import com.liato.bankdroid.R;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.banking.exceptions.BankChoiceException;
import com.liato.bankdroid.banking.exceptions.BankException;
import com.liato.bankdroid.banking.exceptions.LoginException;
import com.liato.bankdroid.db.DBAdapter;
import com.liato.bankdroid.liveview.LiveViewService;
import com.liato.bankdroid.utils.LoggingUtils;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.PendingIntent.CanceledException;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.IBinder;
import android.os.SystemClock;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v4.app.NotificationCompat;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import timber.log.Timber;
public class AutoRefreshService extends Service {
public final static String BROADCAST_WIDGET_REFRESH = "com.liato.bankdroid.WIDGET_REFRESH";
public final static String BROADCAST_MAIN_REFRESH = "com.liato.bankdroid.MAIN_REFRESH";
public final static String BROADCAST_REMOTE_NOTIFIER
= "org.damazio.notifier.service.UserReceiver.USER_MESSAGE";
public final static String BROADCAST_OPENWATCH_TEXT = "com.smartmadsoft.openwatch.action.TEXT";
public final static String BROADCAST_OPENWATCH_VIBRATE
= "com.smartmadsoft.openwatch.action.VIBRATE";
public final static String ACTION_MAIN_SHOW_TRANSACTIONS
= "com.liato.bankdroid.action.MAIN_SHOW_TRANSACTIONS";
public final static String BROADCAST_TRANSACTIONS_UPDATED
= "com.liato.bankdroid.action.TRANSACTIONS";
public static void showNotification(final Bank bank, final Account account,
final BigDecimal diff, Context context) {
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
if (!prefs.getBoolean("notify_on_change", true)) {
return;
}
String text = String.format("%s: %s%s", account.getName(),
((diff.compareTo(new BigDecimal(0)) == 1) ? "+" : ""),
Helpers.formatBalance(diff, account.getCurrency()));
if (!prefs.getBoolean("notify_delta_only", false)) {
text = String.format("%s (%s)", text,
Helpers.formatBalance(account.getBalance(), account.getCurrency()));
}
final NotificationManager notificationManager = (NotificationManager) context
.getSystemService(NOTIFICATION_SERVICE);
final NotificationCompat.Builder notification = new NotificationCompat.Builder(context)
.setSmallIcon(bank.getImageResource())
.setContentTitle(bank.getDisplayName())
.setContentText(text);
// Remove notification from statusbar when clicked
notification.setAutoCancel(true);
// http://www.freesound.org/samplesViewSingle.php?id=75235
// http://www.freesound.org/samplesViewSingle.php?id=91924
if (prefs.getString("notification_sound", null) != null) {
notification.setSound(Uri.parse(prefs.getString(
"notification_sound", null)));
}
if (prefs.getBoolean("notify_with_vibration", true)) {
final long[] vib = {0, 90, 130, 80, 350, 190, 20, 380};
notification.setVibrate(vib);
}
if (prefs.getBoolean("notify_with_led", true)) {
notification.setLights(prefs.getInt("notify_with_led_color",
context.getResources().getColor(R.color.default_led_color)), 700, 200);
}
final PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, MainActivity.class), 0);
notification.setContentIntent(contentIntent);
String numNotifications = prefs.getString("num_notifications", "total");
int notificationId = (int) (numNotifications.equals("total") ? 0
: numNotifications.equals("bank") ? bank.getDbId()
: numNotifications.equals("account") ? account.getId().hashCode()
: SystemClock.elapsedRealtime());
notificationManager.notify(notificationId, notification.build());
// Broadcast to Remote Notifier if enabled
// http://code.google.com/p/android-notifier/
if (prefs.getBoolean("notify_remotenotifier", false)) {
final Intent i = new Intent(BROADCAST_REMOTE_NOTIFIER);
i.putExtra("title", String.format("%s (%s)", bank.getName(), bank.getDisplayName()));
i.putExtra("description", text);
context.sendBroadcast(i);
}
// Broadcast to OpenWatch if enabled
// http://forum.xda-developers.com/showthread.php?t=554551
if (prefs.getBoolean("notify_openwatch", false)) {
Intent i;
if (prefs.getBoolean("notify_openwatch_vibrate", false)) {
i = new Intent(BROADCAST_OPENWATCH_VIBRATE);
} else {
i = new Intent(BROADCAST_OPENWATCH_TEXT);
}
i.putExtra("line1", String.format("%s (%s)", bank.getName(), bank.getDisplayName()));
i.putExtra("line2", text);
context.sendBroadcast(i);
}
// Broadcast to LiveView if enabled
// http://www.sonyericsson.com/cws/products/accessories/overview/liveviewmicrodisplay
if (prefs.getBoolean("notify_liveview", false)) {
final Intent i = new Intent(context, LiveViewService.class);
i.putExtra(LiveViewService.INTENT_EXTRA_ANNOUNCE, true);
i.putExtra(LiveViewService.INTENT_EXTRA_TITLE,
String.format("%s (%s)", bank.getName(), bank.getDisplayName()));
i.putExtra(LiveViewService.INTENT_EXTRA_TEXT, text);
context.startService(i);
}
}
public static void broadcastTransactionUpdate(final Context context,
final long bankId, final String accountId) {
final Intent i = new Intent(BROADCAST_TRANSACTIONS_UPDATED);
i.putExtra("accountId", Long.toString(bankId) + "_" + accountId);
context.sendBroadcast(i);
}
public static void sendWidgetRefresh(final Context context) {
// Send intent to BankdroidWidgetProvider
final Intent updateIntent = new Intent(BROADCAST_WIDGET_REFRESH);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
try {
pendingIntent.send();
} catch (final CanceledException e) {
Timber.w(e, "Problem occurred while updating widget");
}
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
handleStart();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleStart();
return START_NOT_STICKY;
}
private void handleStart() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null &&
ni.isConnected() &&
shouldUpdateOnRoaming(ni)) {
if (InsideUpdatePeriod()) {
new DataRetrieverTask(this).execute();
} else {
Timber.v("Skipping update due to not in update period.");
stopSelf();
}
}
}
private boolean shouldUpdateOnRoaming(NetworkInfo ni) {
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
if (prefs.getBoolean("disable_during_roaming", false) && ni.isRoaming()) {
return false;
}
return true;
}
private boolean InsideUpdatePeriod() {
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
int start = prefs.getInt("refresh_start_minutes", 0);
int stop = prefs.getInt("refresh_stop_minutes", 0);
// If start is bigger than stop we always update. It should perhaps
// be possible to set start to 17:00 and stop to 07:00 and have to
// updates working from 17 to 07 around midnight
if (start >= stop) {
return true;
}
Date now = new Date();
int minutesSinceMidnight = now.getHours() * 60 + now.getMinutes();
return minutesSinceMidnight > start && minutesSinceMidnight < stop;
}
@Override
public void onDestroy() {
}
@Override
public IBinder onBind(final Intent intent) {
return null;
}
static class DataRetrieverTask extends AsyncTask<String, String, Void> {
private final SharedPreferences prefs;
private ArrayList<String> errors;
protected final AutoRefreshService autoRefreshService;
private Resources res;
// This constructor is for unit testing only
protected DataRetrieverTask(AutoRefreshService autoRefreshService, SharedPreferences prefs) {
this.autoRefreshService = autoRefreshService;
this.prefs = prefs;
}
public DataRetrieverTask(AutoRefreshService autoRefreshService) {
this(autoRefreshService,
PreferenceManager.getDefaultSharedPreferences(autoRefreshService));
}
@Override
protected void onPreExecute() {
}
protected List<Bank> getBanks() {
return BankFactory.banksFromDb(autoRefreshService, true);
}
@NonNull
protected DBAdapter getDBAdapter() {
return new DBAdapter(autoRefreshService);
}
protected void sendWidgetRefresh() {
final Intent updateIntent = new Intent(BROADCAST_MAIN_REFRESH);
autoRefreshService.sendBroadcast(updateIntent);
AutoRefreshService.sendWidgetRefresh(autoRefreshService);
}
@Override
protected Void doInBackground(final String... args) {
errors = new ArrayList<>();
Boolean refreshWidgets = false;
final List<Bank> banks = getBanks();
if (banks.isEmpty()) {
return null;
}
final DBAdapter db = getDBAdapter();
BigDecimal currentBalance;
BigDecimal diff;
BigDecimal minDelta = new BigDecimal(prefs.getString("notify_min_delta", "0"));
final HashMap<String, Account> accounts = new HashMap<>();
for (final Bank bank : banks) {
if (prefs.getBoolean("debug_mode", false)
&& prefs.getBoolean("debug_only_testbank", false)) {
Timber.d(
"Only_Testbank is ON. Skipping update for %s",
bank.getName());
continue;
}
if (bank.isDisabled()) {
LoggingUtils.logDisabledBank(bank);
continue;
}
try {
currentBalance = bank.getBalance();
accounts.clear();
for (final Account account : bank.getAccounts()) {
accounts.put(account.getId(), account);
}
bank.update();
diff = currentBalance.subtract(bank.getBalance());
if (diff.compareTo(BigDecimal.ZERO) != 0) {
refreshWidgets = true;
}
if (diff.compareTo(new BigDecimal(0)) != 0
&& diff.abs().compareTo(minDelta) != -1) {
Account oldAccount;
for (final Account account : bank.getAccounts()) {
oldAccount = accounts.get(account.getId());
if (oldAccount != null) {
if (account.getBalance().compareTo(
oldAccount.getBalance()) != 0) {
boolean notify = false;
switch (account.getType()) {
case Account.REGULAR:
notify = prefs.getBoolean(
"notify_for_deposit", true);
break;
case Account.FUNDS:
notify = prefs.getBoolean(
"notify_for_funds", false);
break;
case Account.LOANS:
notify = prefs.getBoolean(
"notify_for_loans", false);
break;
case Account.CCARD:
notify = prefs.getBoolean(
"notify_for_ccards", true);
break;
case Account.OTHER:
notify = prefs.getBoolean(
"notify_for_other", false);
break;
}
if (account.isHidden()
|| !account.isNotify()) {
notify = false;
}
if (notify) {
diff = account.getBalance().subtract(
oldAccount.getBalance());
showNotification(bank, account, diff,
autoRefreshService);
}
}
}
}
if (prefs.getBoolean(
"autoupdates_transactions_enabled", true)) {
bank.updateAllTransactions();
LoggingUtils.logBankUpdate(bank, true);
} else {
LoggingUtils.logBankUpdate(bank, false);
}
}
bank.closeConnection();
db.updateBank(bank);
// Send update for all accounts since we're overwriting the
// database transaction history
if (prefs.getBoolean("content_provider_enabled", false)) {
for (final Account account : bank.getAccounts()) {
broadcastTransactionUpdate(autoRefreshService.getBaseContext(),
bank.getDbId(), account.getId());
}
}
} catch (final BankException e) {
// Refresh widgets if an update fails
Timber.e(e, "Could not update bank %s", bank.getName());
} catch (final LoginException e) {
Timber.d(e, "Invalid credentials for bank %s", bank.getName());
refreshWidgets = true;
db.disableBank(bank.getDbId());
} catch (BankChoiceException e) {
Timber.w(e, "BankChoiceException");
} catch (Exception e) {
Timber.e(e, "An unexpected error occurred while updating bank %s", bank.getName());
}
}
if (refreshWidgets) {
sendWidgetRefresh();
}
return null;
}
@Override
protected void onProgressUpdate(final String... args) {
}
@Override
protected void onPostExecute(final Void unused) {
if ((this.errors != null) && !this.errors.isEmpty()) {
final StringBuilder errormsg = new StringBuilder();
errormsg.append(res.getText(R.string.accounts_were_not_updated)
+ ":\n");
for (final String err : errors) {
errormsg.append(err);
errormsg.append("\n");
}
}
Editor edit = prefs.edit();
edit.putLong("autoupdates_last_update", System.currentTimeMillis());
edit.apply();
autoRefreshService.stopSelf();
}
}
}
================================================
FILE: app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider.java
================================================
/*
* Copyright (C) 2010 Nullbyte <http://nullbyte.eu>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.liato.bankdroid.appwidget;
import com.liato.bankdroid.Helpers;
import com.liato.bankdroid.MainActivity;
import com.liato.bankdroid.R;
import com.liato.bankdroid.banking.Account;
import com.liato.bankdroid.banking.Bank;
import com.liato.bankdroid.banking.BankFactory;
import com.liato.bankdroid.banking.exceptions.BankChoiceException;
import com.liato.bankdroid.banking.exceptions.BankException;
import com.liato.bankdroid.banking.exceptions.LoginException;
import com.liato.bankdroid.db.DBAdapter;
import com.liato.bankdroid.utils.NetworkUtils;
import android.app.PendingIntent;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.RemoteViews;
import java.io.IOException;
import timber.log.Timber;
public abstract class BankdroidWidgetProvider extends AppWidgetProvider {
private final static String TAG = "BankdroidWidgetProvider";
private final static String ACTION_WIDGET_BLUR = "com.liato.bankdroid.action.WIDGET_BLUR";
private final static String ACTION_WIDGET_UNBLUR = "com.liato.bankdroid.action.WIDGET_UNBLUR";
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId, Account account) {
RemoteViews views = buildAppWidget(context, appWidgetManager, appWidgetId, account);
if (views != null) {
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
RemoteViews views = buildAppWidget(context, appWidgetManager, appWidgetId);
if (views != null) {
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
static void unblurAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
SharedPreferences prefs = context.getSharedPreferences("widget_prefs", 0);
Editor e = prefs.edit();
e.putBoolean("widget_unblurred_" + appWidgetId, true);
e.apply();
RemoteViews views = buildAppWidget(context, appWidgetManager, appWidgetId);
if (views != null) {
views.setViewVisibility(R.id.imgBalanceblur, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountnameBlur, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountbalance, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountname, View.VISIBLE);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
static void blurAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
SharedPreferences prefs = context.getSharedPreferences("widget_prefs", 0);
Editor e = prefs.edit();
e.remove("widget_unblurred_" + appWidgetId);
e.apply();
RemoteViews views = buildAppWidget(context, appWidgetManager, appWidgetId);
if (views != null) {
views.setViewVisibility(R.id.imgBalanceblur, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountnameBlur, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountbalance, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountname, View.GONE);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
static RemoteViews buildAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
String accountId = WidgetConfigureActivity.getAccountId(context, appWidgetId);
long bankId = WidgetConfigureActivity.getBankId(context, appWidgetId);
if (accountId == null) {
Timber.w("Widget not found. ID: %s", appWidgetId);
return disableAppWidget(context, appWidgetManager,
appWidgetId);
}
Account account = BankFactory.accountFromDb(context, bankId + "_" + accountId, false);
if (account == null) {
Timber.w("Account not found in database");
return disableAppWidget(context, appWidgetManager,
appWidgetId);
}
Bank bank = BankFactory.bankFromDb(account.getBankDbId(), context, false);
if (bank == null) {
Timber.w("Bank not found in database");
return disableAppWidget(context, appWidgetManager,
appWidgetId);
}
account.setBank(bank);
return buildAppWidget(context, appWidgetManager,
appWidgetId, account);
}
static RemoteViews buildAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId, Account account) {
AppWidgetProviderInfo providerInfo = appWidgetManager.getAppWidgetInfo(appWidgetId);
int layoutId = (providerInfo == null) ? R.layout.widget : providerInfo.initialLayout;
SharedPreferences prefs = context.getSharedPreferences("widget_prefs", 0);
SharedPreferences defprefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.getBoolean("transperant_background" + appWidgetId, false) && (providerInfo
!= null)) {
if (providerInfo.initialLayout == R.layout.widget_large) {
layoutId = R.layout.widget_large_transparent;
} else {
layoutId = R.layout.widget_transparent;
}
}
Bank bank = account.getBank();
RemoteViews views = new RemoteViews(context.getPackageName(), layoutId);
views.setTextViewText(R.id.txtWidgetAccountname, account.getName().toUpperCase());
views.setTextViewText(R.id.txtWidgetAccountnameBlur, account.getName().toUpperCase());
views.setTextViewText(R.id.txtWidgetAccountbalance,
Helpers.formatBalance(account.getBalance(), account.getCurrency(),
defprefs.getBoolean("round_widget_balance", false),
bank.getDecimalFormatter(),
bank.isDisabled()));
views.setImageViewResource(R.id.imgWidgetIcon, bank.getImageResource());
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent;
//intent = new Intent(context, AccountsActivity.class);
pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.layWidgetContainer, pendingIntent);
intent = new Intent(context, WidgetService.class);
intent.setAction(AutoRefreshService.BROADCAST_WIDGET_REFRESH);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(
Uri.parse("rofl://copter/" + appWidgetId + "/" + System.currentTimeMillis()));
pendingIntent = PendingIntent
.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.imgWidgetIcon, pendingIntent);
views.setOnClickPendingIntent(R.id.hitBox, pendingIntent);
intent = new Intent(context, WidgetService.class);
intent.setAction(BankdroidWidgetProvider.ACTION_WIDGET_UNBLUR);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(Uri.parse(
"rofl://copter/widgetunblur/" + appWidgetId + "/" + System.currentTimeMillis()));
pendingIntent = PendingIntent
.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.imgBalanceblur, pendingIntent);
if (defprefs.getBoolean("widget_blur_balance", false) && !prefs
.getBoolean("widget_unblurred_" + appWidgetId, false)) {
views.setViewVisibility(R.id.imgBalanceblur, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountnameBlur, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountbalance, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountname, View.GONE);
views.setOnClickPendingIntent(R.id.layWidgetContainer, pendingIntent);
} else {
views.setViewVisibility(R.id.imgBalanceblur, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountnameBlur, View.GONE);
views.setViewVisibility(R.id.txtWidgetAccountbalance, View.VISIBLE);
views.setViewVisibility(R.id.txtWidgetAccountname, View.VISIBLE);
intent = new Intent(context, MainActivity.class);
intent.setAction(AutoRefreshService.ACTION_MAIN_SHOW_TRANSACTIONS);
intent.setData(Uri.parse("rofl://copter/showtransactions/" + appWidgetId + "/" + System
.currentTimeMillis()));
intent.putExtra("bank", bank.getDbId());
intent.putExtra("account", account.getId());
pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.txtWidgetAccountbalance, pendingIntent);
views.setOnClickPendingIntent(R.id.layWidgetContainer, pendingIntent);
}
return views;
}
static RemoteViews disableAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
AppWidgetProviderInfo providerInfo = appWidgetManager.getAppWidgetInfo(appWidgetId);
int layoutId = (providerInfo == null) ? R.layout.widget : providerInfo.initialLayout;
SharedPreferences prefs = context.getSharedPreferences("widget_prefs", 0);
if (prefs.getBoolean("transperant_background" + appWidgetId, false) && (providerInfo
!= null)) {
if (providerInfo.initialLayout == R.layout.widget_large) {
layoutId = R.layout.widget_large_transparent;
} else {
layoutId = R.layout.widget_transparent;
}
}
RemoteViews views = new RemoteViews(context.getPackageName(), layoutId);
views.setTextViewText(R.id.txtWidgetAccountname, "");
views.setTextViewText(R.id.txtWidgetAccountbalance, "ERROR");
views.setImageViewResource(R.id.imgWidgetIcon, R.drawable.icon_large);
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.txtWidgetAccountbalance, pendingIntent);
views.setOnClickPendingIntent(R.id.layWidgetContainer, pendingIntent);
return views;
}
public void onReceive(Context context, Intent intent) {
// v1.5 fix that doesn't call onDelete Action
final String action = intent.getAction();
if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) {
final int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
this.onDeleted(context, new int[]{appWidgetId});
}
} else {
super.onReceive(context, intent);
}
if (action.equals(AutoRefreshService.BROADCAST_WIDGET_REFRESH) || action
.equals(android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE)) {
AppWidgetManager appWM = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWM.getAppWidgetIds(intent.getComponent());
final int N = appWidgetIds.length;
gitextract_2xrfz_mg/
├── .gitattributes
├── .gitignore
├── .travis.yml
├── CHANGELOG
├── CONTRIBUTING.md
├── CONTRIBUTORS.txt
├── LICENSE
├── README.rst
├── app/
│ ├── .gitignore
│ ├── build.gradle
│ ├── crashlytics.properties.example
│ ├── proguard-rules.pro
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── aidl/
│ │ │ └── com/
│ │ │ └── sonyericsson/
│ │ │ └── extras/
│ │ │ └── liveview/
│ │ │ ├── IPluginServiceCallbackV1.aidl
│ │ │ └── IPluginServiceV1.aidl
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ ├── ast/
│ │ │ │ │ └── util/
│ │ │ │ │ └── CookieParser.java
│ │ │ │ └── liato/
│ │ │ │ └── bankdroid/
│ │ │ │ ├── AboutActivity.java
│ │ │ │ ├── ActivityHelper.java
│ │ │ │ ├── BankEditActivity.java
│ │ │ │ ├── BankdroidApplication.java
│ │ │ │ ├── BetterPopupWindow.java
│ │ │ │ ├── DataRetrieverTask.java
│ │ │ │ ├── LockableActivity.java
│ │ │ │ ├── LockablePreferenceActivity.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── PairApplicationsActivity.java
│ │ │ │ ├── SettingsActivity.java
│ │ │ │ ├── StartupReceiver.java
│ │ │ │ ├── TimePreference.java
│ │ │ │ ├── TransactionsActivity.java
│ │ │ │ ├── WebViewActivity.java
│ │ │ │ ├── adapters/
│ │ │ │ │ └── AccountsAdapter.java
│ │ │ │ ├── appwidget/
│ │ │ │ │ ├── AutoRefreshService.java
│ │ │ │ │ ├── BankdroidWidgetProvider.java
│ │ │ │ │ ├── BankdroidWidgetProvider_2x1.java
│ │ │ │ │ ├── BankdroidWidgetProvider_4x1.java
│ │ │ │ │ └── WidgetConfigureActivity.java
│ │ │ │ ├── banking/
│ │ │ │ │ └── BankFactory.java
│ │ │ │ ├── db/
│ │ │ │ │ ├── DBAdapter.java
│ │ │ │ │ ├── Database.java
│ │ │ │ │ ├── DatabaseHelper.java
│ │ │ │ │ └── LegacyDatabase.java
│ │ │ │ ├── liveview/
│ │ │ │ │ ├── LiveViewService.java
│ │ │ │ │ ├── PluginConstants.java
│ │ │ │ │ ├── PluginReceiver.java
│ │ │ │ │ └── PluginUtils.java
│ │ │ │ ├── lockpattern/
│ │ │ │ │ ├── ChooseLockPattern.java
│ │ │ │ │ ├── ChooseLockPatternExample.java
│ │ │ │ │ ├── ChooseLockPatternTutorial.java
│ │ │ │ │ ├── ConfirmLockPattern.java
│ │ │ │ │ ├── LinearLayoutWithDefaultTouchRecepient.java
│ │ │ │ │ ├── LockPatternUtils.java
│ │ │ │ │ └── LockPatternView.java
│ │ │ │ ├── provider/
│ │ │ │ │ └── BankTransactionsProvider.java
│ │ │ │ └── utils/
│ │ │ │ ├── EmulatorUtils.java
│ │ │ │ ├── LoggingUtils.java
│ │ │ │ └── NetworkUtils.java
│ │ │ └── net/
│ │ │ ├── margaritov/
│ │ │ │ └── preference/
│ │ │ │ └── colorpicker/
│ │ │ │ ├── AlphaPatternDrawable.java
│ │ │ │ ├── ColorPickerDialog.java
│ │ │ │ ├── ColorPickerPanelView.java
│ │ │ │ ├── ColorPickerPreference.java
│ │ │ │ └── ColorPickerView.java
│ │ │ └── sf/
│ │ │ └── andhsli/
│ │ │ └── hotspotlogin/
│ │ │ └── SimpleCrypto.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── grow_from_bottom.xml
│ │ │ ├── grow_from_top.xml
│ │ │ ├── grow_from_topleft_to_bottomright.xml
│ │ │ ├── shrink_from_bottom.xml
│ │ │ ├── shrink_from_bottomright_to_topleft.xml
│ │ │ ├── shrink_from_top.xml
│ │ │ ├── zoom_enter.xml
│ │ │ └── zoom_exit.xml
│ │ ├── drawable/
│ │ │ ├── btn_check.xml
│ │ │ ├── lock_anim.xml
│ │ │ ├── menu_button.xml
│ │ │ ├── popup_button.xml
│ │ │ └── widget_progress.xml
│ │ ├── layout/
│ │ │ ├── about.xml
│ │ │ ├── bank.xml
│ │ │ ├── bank_spinner_dropdown_item.xml
│ │ │ ├── bank_spinner_item.xml
│ │ │ ├── choose_lock_pattern.xml
│ │ │ ├── choose_lock_pattern_example.xml
│ │ │ ├── choose_lock_pattern_tutorial.xml
│ │ │ ├── confirm_lock_pattern.xml
│ │ │ ├── dialog_color_picker.xml
│ │ │ ├── empty.xml
│ │ │ ├── listitem_accounts_group.xml
│ │ │ ├── listitem_accounts_item.xml
│ │ │ ├── main.xml
│ │ │ ├── pair_applications_layout.xml
│ │ │ ├── popup_account.xml
│ │ │ ├── popup_bank.xml
│ │ │ ├── toolbar.xml
│ │ │ ├── transaction_date.xml
│ │ │ ├── transaction_item.xml
│ │ │ ├── transactions.xml
│ │ │ ├── webview.xml
│ │ │ ├── widget.xml
│ │ │ ├── widget_large.xml
│ │ │ ├── widget_large_transparent.xml
│ │ │ └── widget_transparent.xml
│ │ ├── layout-land/
│ │ │ ├── choose_lock_pattern.xml
│ │ │ ├── confirm_lock_pattern.xml
│ │ │ └── dialog_color_picker.xml
│ │ ├── menu/
│ │ │ ├── about.xml
│ │ │ └── main.xml
│ │ ├── values/
│ │ │ ├── array.xml
│ │ │ ├── colors.xml
│ │ │ ├── config.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ └── themes.xml
│ │ ├── values-sv/
│ │ │ ├── array.xml
│ │ │ └── strings.xml
│ │ ├── values-v21/
│ │ │ └── themes.xml
│ │ └── xml/
│ │ ├── appwidget_info.xml
│ │ ├── appwidget_info_large.xml
│ │ └── settings.xml
│ └── test/
│ └── java/
│ └── com/
│ └── liato/
│ └── bankdroid/
│ ├── DataRetrieverTaskTest.java
│ └── appwidget/
│ └── DataRetrieverTaskTest.java
├── assets/
│ ├── btn_check.psd
│ ├── icabanken.psd
│ ├── logos.psd
│ └── widgets.psd
├── bankdroid-core/
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── liato/
│ │ └── bankdroid/
│ │ └── configuration/
│ │ └── DefaultConnectionConfiguration.java
│ └── resources/
│ └── i18n/
│ ├── application.properties
│ └── application_sv_SE.properties
├── bankdroid-interface/
│ ├── build.gradle
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── liato/
│ └── bankdroid/
│ └── api/
│ ├── Provider.java
│ ├── ProviderFactory.java
│ ├── configuration/
│ │ ├── Entry.java
│ │ ├── Field.java
│ │ ├── FieldBuilder.java
│ │ ├── FieldType.java
│ │ ├── FieldValidator.java
│ │ └── ProviderConfiguration.java
│ ├── domain/
│ │ ├── ProviderConnection.java
│ │ └── account/
│ │ ├── Account.java
│ │ ├── CreditCardAccount.java
│ │ ├── Equity.java
│ │ ├── EquityAccount.java
│ │ ├── LiabilityAccount.java
│ │ ├── Payment.java
│ │ ├── PrePaidCardAccount.java
│ │ ├── Transaction.java
│ │ ├── TransactionAccount.java
│ │ └── impl/
│ │ ├── AbstractAccountBuilder.java
│ │ ├── AccountBuilder.java
│ │ ├── CreditCardAccountBuilder.java
│ │ ├── EquityAccountBuilder.java
│ │ ├── EquityBuilder.java
│ │ ├── LiabilityAccountBuilder.java
│ │ ├── PrePaidCardAccountBuilder.java
│ │ ├── TransactionAccountBuilder.java
│ │ └── TransactionBuilder.java
│ └── service/
│ └── ServiceLoader.java
├── bankdroid-legacy/
│ ├── build.gradle
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── liato/
│ │ │ │ └── bankdroid/
│ │ │ │ ├── Helpers.java
│ │ │ │ ├── banking/
│ │ │ │ │ ├── Account.java
│ │ │ │ │ ├── Bank.java
│ │ │ │ │ ├── BankChoice.java
│ │ │ │ │ ├── BasicProviderConfiguration.java
│ │ │ │ │ ├── LegacyBankFactory.java
│ │ │ │ │ ├── LegacyBankHelper.java
│ │ │ │ │ ├── LegacyProviderConfiguration.java
│ │ │ │ │ ├── Transaction.java
│ │ │ │ │ ├── banks/
│ │ │ │ │ │ ├── AbsIkanoPartner.java
│ │ │ │ │ │ ├── AkeliusInvest.java
│ │ │ │ │ │ ├── AkeliusSpar.java
│ │ │ │ │ │ ├── AppeakPoker.java
│ │ │ │ │ │ ├── BetterGlobe.java
│ │ │ │ │ │ ├── Bioklubben.java
│ │ │ │ │ │ ├── BlekingeTrafiken.java
│ │ │ │ │ │ ├── Bredband2VoIP.java
│ │ │ │ │ │ ├── BrummerKF.java
│ │ │ │ │ │ ├── CSN.java
│ │ │ │ │ │ ├── Chalmrest.java
│ │ │ │ │ │ ├── DanskeBank.java
│ │ │ │ │ │ ├── Everydaycard.java
│ │ │ │ │ │ ├── FirstCard.java
│ │ │ │ │ │ ├── Hemkop.java
│ │ │ │ │ │ ├── Hors.java
│ │ │ │ │ │ ├── IKEA.java
│ │ │ │ │ │ ├── IkanoBank.java
│ │ │ │ │ │ ├── Jojo.java
│ │ │ │ │ │ ├── McDonalds.java
│ │ │ │ │ │ ├── Meniga.java
│ │ │ │ │ │ ├── MinPension.java
│ │ │ │ │ │ ├── Nordnet.java
│ │ │ │ │ │ ├── OKQ8.java
│ │ │ │ │ │ ├── Ostgotatrafiken.java
│ │ │ │ │ │ ├── Osuuspankki.java
│ │ │ │ │ │ ├── Payson.java
│ │ │ │ │ │ ├── PlusGirot.java
│ │ │ │ │ │ ├── SevenDay.java
│ │ │ │ │ │ ├── SveaDirekt.java
│ │ │ │ │ │ ├── SvenskaSpel.java
│ │ │ │ │ │ ├── TestBank.java
│ │ │ │ │ │ ├── TicketRikskortet.java
│ │ │ │ │ │ ├── Vasttrafik.java
│ │ │ │ │ │ ├── Zidisha.java
│ │ │ │ │ │ ├── americanexpress/
│ │ │ │ │ │ │ ├── AmericanExpress.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── AccountActivity.java
│ │ │ │ │ │ │ ├── Amount.java
│ │ │ │ │ │ │ ├── Capabilities.java
│ │ │ │ │ │ │ ├── Card.java
│ │ │ │ │ │ │ ├── Date.java
│ │ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ │ ├── LoginResponse.java
│ │ │ │ │ │ │ ├── LogonData.java
│ │ │ │ │ │ │ ├── Summary.java
│ │ │ │ │ │ │ ├── SummaryData.java
│ │ │ │ │ │ │ ├── TotalBalance.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ ├── TransactionCapabilities.java
│ │ │ │ │ │ │ ├── TransactionDetails.java
│ │ │ │ │ │ │ └── TransactionsResponse.java
│ │ │ │ │ │ ├── bitcoin/
│ │ │ │ │ │ │ ├── Bitcoin.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── BlockchainResponse.java
│ │ │ │ │ │ │ ├── Input.java
│ │ │ │ │ │ │ ├── Out.java
│ │ │ │ │ │ │ ├── PrevOut.java
│ │ │ │ │ │ │ └── Transfer.java
│ │ │ │ │ │ ├── coop/
│ │ │ │ │ │ │ ├── Coop.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ └── web/
│ │ │ │ │ │ │ ├── D.java
│ │ │ │ │ │ │ ├── Model.java
│ │ │ │ │ │ │ ├── Result.java
│ │ │ │ │ │ │ └── WebTransactionHistoryResponse.java
│ │ │ │ │ │ ├── ica/
│ │ │ │ │ │ │ ├── ICA.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── Account.java
│ │ │ │ │ │ │ ├── LoginError.java
│ │ │ │ │ │ │ ├── Overview.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ └── User.java
│ │ │ │ │ │ ├── lansforsakringar/
│ │ │ │ │ │ │ ├── Lansforsakringar.java
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── request/
│ │ │ │ │ │ │ │ ├── AccountsRequest.java
│ │ │ │ │ │ │ │ ├── ChallengeRequest.java
│ │ │ │ │ │ │ │ ├── LoginRequest.java
│ │ │ │ │ │ │ │ ├── TransactionsRequest.java
│ │ │ │ │ │ │ │ └── UpcomingTransactionsRequest.java
│ │ │ │ │ │ │ └── response/
│ │ │ │ │ │ │ ├── Account.java
│ │ │ │ │ │ │ ├── AccountsResponse.java
│ │ │ │ │ │ │ ├── ChallengeResponse.java
│ │ │ │ │ │ │ ├── LoginResponse.java
│ │ │ │ │ │ │ ├── NumberResponse.java
│ │ │ │ │ │ │ ├── Transaction.java
│ │ │ │ │ │ │ └── TransactionsResponse.java
│ │ │ │ │ │ ├── nordea/
│ │ │ │ │ │ │ ├── CaptchaBreaker.java
│ │ │ │ │ │ │ ├── CaptchaBreakerNumbers.java
│ │ │ │ │ │ │ └── Nordea.java
│ │ │ │ │ │ └── rikslunchen/
│ │ │ │ │ │ ├── Rikslunchen.java
│ │ │ │ │ │ └── model/
│ │ │ │ │ │ └── Envelope.java
│ │ │ │ │ └── exceptions/
│ │ │ │ │ ├── BankChoiceException.java
│ │ │ │ │ ├── BankException.java
│ │ │ │ │ └── LoginException.java
│ │ │ │ ├── provider/
│ │ │ │ │ ├── IAccountTypes.java
│ │ │ │ │ ├── IBankTransactionsProvider.java
│ │ │ │ │ └── IBankTypes.java
│ │ │ │ └── utils/
│ │ │ │ ├── ExceptionUtils.java
│ │ │ │ ├── FieldTypeMapper.java
│ │ │ │ ├── Installation.java
│ │ │ │ └── StringUtils.java
│ │ │ └── eu/
│ │ │ └── nullbyte/
│ │ │ └── android/
│ │ │ └── urllib/
│ │ │ ├── CertPinningSSLSocketFactory.java
│ │ │ ├── CertPinningTrustManager.java
│ │ │ ├── CertificateReader.java
│ │ │ ├── ClientCertificate.java
│ │ │ ├── HttpMethod.java
│ │ │ └── Urllib.java
│ │ └── res/
│ │ ├── raw/
│ │ │ ├── cert_akeliusinvest.pem
│ │ │ ├── cert_akeliusspar.pem
│ │ │ ├── cert_americanexpress_global.pem
│ │ │ ├── cert_bioklubben.pem
│ │ │ ├── cert_bredband2.pem
│ │ │ ├── cert_brummer.pem
│ │ │ ├── cert_coop.pem
│ │ │ ├── cert_csn.pem
│ │ │ ├── cert_danskebank.pem
│ │ │ ├── cert_firstcard.pem
│ │ │ ├── cert_hemkop.pem
│ │ │ ├── cert_ica.pem
│ │ │ ├── cert_ikanobank.pem
│ │ │ ├── cert_ikanopartner.pem
│ │ │ ├── cert_jojo.pem
│ │ │ ├── cert_lansforsakringar.pem
│ │ │ ├── cert_meniga.pem
│ │ │ ├── cert_minpension.pem
│ │ │ ├── cert_nordnet.pem
│ │ │ ├── cert_okq8.pem
│ │ │ ├── cert_ostgotatrafiken_login.pem
│ │ │ ├── cert_ostgotatrafiken_overview.pem
│ │ │ ├── cert_osuuspankki.pem
│ │ │ ├── cert_osuuspankki_mobile.pem
│ │ │ ├── cert_payson.pem
│ │ │ ├── cert_plusgirot.pem
│ │ │ ├── cert_rikslunchen.pem
│ │ │ ├── cert_sevenday.pem
│ │ │ ├── cert_sveadirekt.pem
│ │ │ ├── cert_svenskaspel.pem
│ │ │ ├── cert_ticketrikskortet.pem
│ │ │ ├── cert_vasttrafik.pem
│ │ │ ├── cert_zidisha.pem
│ │ │ └── loading.html
│ │ ├── values/
│ │ │ └── strings.xml
│ │ └── values-sv/
│ │ └── strings.xml
│ └── test/
│ └── java/
│ ├── com/
│ │ └── liato/
│ │ └── bankdroid/
│ │ └── utils/
│ │ └── ExceptionUtilsTest.java
│ └── not/
│ └── bankdroid/
│ └── at/
│ └── all/
│ ├── ExceptionFactory.java
│ └── ExceptionThrower.java
├── build.gradle
├── config/
│ ├── ide/
│ │ └── androidstudio/
│ │ └── AndroidStyle.xml
│ └── quality/
│ ├── checkstyle/
│ │ ├── checkstyle.xml
│ │ └── suppressions.xml
│ ├── findbugs/
│ │ └── findbugs-filter.xml
│ ├── lint/
│ │ └── lint.xml
│ ├── pmd/
│ │ └── pmd-ruleset.xml
│ └── quality.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── tools/
├── nordea_captcha_breaker/
│ ├── captchabreaker.py
│ ├── captchas_item_template.html
│ └── captchas_template.html
├── refresh_bank_certificates
└── update-suppressions.sh
SYMBOL INDEX (1769 symbols across 194 files)
FILE: app/src/main/java/com/ast/util/CookieParser.java
class CookieParser (line 26) | public class CookieParser {
method parse (line 37) | public static Cookie parse(String host, String setCookieString) {
class Cookie (line 79) | public static class Cookie {
FILE: app/src/main/java/com/liato/bankdroid/AboutActivity.java
class AboutActivity (line 31) | public class AboutActivity extends LockableActivity {
method onCreate (line 36) | @Override
method onCreateOptionsMenu (line 48) | @Override
method onOptionsItemSelected (line 56) | @Override
FILE: app/src/main/java/com/liato/bankdroid/ActivityHelper.java
class ActivityHelper (line 8) | public class ActivityHelper {
method dismissDialog (line 10) | public static void dismissDialog(Dialog dialog) {
FILE: app/src/main/java/com/liato/bankdroid/BankEditActivity.java
class BankEditActivity (line 73) | public class BankEditActivity extends LockableActivity implements OnItem...
method onCreate (line 88) | @Override
method onSubmit (line 123) | @OnClick(R.id.btnSettingsOk)
method onCancel (line 134) | @OnClick(R.id.btnSettingsCancel)
method onItemSelected (line 139) | @Override
method onNothingSelected (line 151) | @Override
method createForm (line 156) | private void createForm(List<Field>... configurations) {
method createLabel (line 169) | private void createLabel(Field field) {
method createField (line 177) | private void createField(Field field) {
method createSpinner (line 193) | private void createSpinner(Field field) {
method populateForm (line 201) | private void populateForm(Bank bank) {
method getFormParameters (line 212) | private Map<String, String> getFormParameters(List<Field> fields) {
method getFormParameter (line 220) | private String getFormParameter(String property) {
method validate (line 234) | private boolean validate() {
class BankSpinnerAdapter (line 250) | private class BankSpinnerAdapter<T> extends ArrayAdapter<T> {
method BankSpinnerAdapter (line 254) | public BankSpinnerAdapter(Context context, List<T> items) {
method getView (line 259) | @Override
method getDropDownView (line 271) | @Override
class DataRetrieverTask (line 287) | private class DataRetrieverTask extends AsyncTask<String, Void, Void> {
method DataRetrieverTask (line 299) | public DataRetrieverTask(BankEditActivity context, Bank bank) {
method onPreExecute (line 305) | protected void onPreExecute() {
method doInBackground (line 310) | protected Void doInBackground(final String... args) {
method onPostExecute (line 344) | protected void onPostExecute(final Void unused) {
FILE: app/src/main/java/com/liato/bankdroid/BankdroidApplication.java
class BankdroidApplication (line 8) | public class BankdroidApplication extends Application {
method onCreate (line 12) | @Override
method setApplicationMessage (line 18) | public void setApplicationMessage(String messageText) {
method showAndDeleteApplicationMessage (line 22) | public void showAndDeleteApplicationMessage() {
FILE: app/src/main/java/com/liato/bankdroid/BetterPopupWindow.java
class BetterPopupWindow (line 22) | public class BetterPopupWindow {
method BetterPopupWindow (line 40) | public BetterPopupWindow(ViewGroup parentView, View anchor) {
method onCreate (line 68) | protected void onCreate() {
method onShow (line 74) | protected void onShow() {
method preShow (line 77) | private void preShow() {
method setBackgroundDrawable (line 102) | public void setBackgroundDrawable(Drawable background) {
method setContentView (line 111) | public void setContentView(View root) {
method setContentView (line 119) | public void setContentView(int layoutResID) {
method setOnDismissListener (line 129) | public void setOnDismissListener(PopupWindow.OnDismissListener listene...
method showLikePopDownMenu (line 136) | public void showLikePopDownMenu() {
method showLikePopDownMenu (line 146) | public void showLikePopDownMenu(int xOffset, int yOffset) {
method showLikeQuickAction (line 157) | public void showLikeQuickAction() {
method showLikeQuickAction (line 167) | public void showLikeQuickAction(int xOffset, int yOffset) {
method dismiss (line 200) | public void dismiss() {
FILE: app/src/main/java/com/liato/bankdroid/DataRetrieverTask.java
class DataRetrieverTask (line 47) | public class DataRetrieverTask extends AsyncTask<String, String, Void> {
method DataRetrieverTask (line 59) | public DataRetrieverTask(final MainActivity parent) {
method DataRetrieverTask (line 65) | public DataRetrieverTask(final MainActivity parent, final long bankId) {
method onPreExecute (line 70) | @Override
method getDialog (line 79) | @NonNull
method getBankFromDb (line 84) | @Nullable
method getBanksFromDb (line 89) | protected List<Bank> getBanksFromDb(Context parent) {
method saveBank (line 93) | protected void saveBank(Bank bank, Context context) {
method publishProgress (line 97) | protected void publishProgress(int zeroBasedBankNumber, @Nullable Bank...
method isContentProviderEnabled (line 105) | protected boolean isContentProviderEnabled() {
method doInBackground (line 111) | @Override
method isListingAllBanks (line 171) | private boolean isListingAllBanks() {
method onProgressUpdate (line 175) | @Override
method onPostExecute (line 182) | @Override
FILE: app/src/main/java/com/liato/bankdroid/LockableActivity.java
class LockableActivity (line 41) | public class LockableActivity extends ActionBarActivity {
method onCreate (line 53) | @Override
method setContentView (line 68) | @Override
method onPause (line 172) | @Override
method onResume (line 197) | @Override
method launchPatternLock (line 222) | private void launchPatternLock() {
method writeLockTime (line 228) | private void writeLockTime() {
method writeLockTime (line 232) | private void writeLockTime(long time) {
method onActivityResult (line 238) | protected void onActivityResult(int requestCode, int resultCode,
method skipLockOnce (line 249) | protected void skipLockOnce() {
method onCreateThumbnail (line 254) | @Override
method pixelate (line 289) | private Bitmap pixelate(Bitmap bitmap, int size) {
method shouldShowActionBar (line 330) | public boolean shouldShowActionBar() {
FILE: app/src/main/java/com/liato/bankdroid/LockablePreferenceActivity.java
class LockablePreferenceActivity (line 32) | public class LockablePreferenceActivity extends PreferenceActivity {
method onCreate (line 42) | @Override
method onPause (line 56) | @Override
method onResume (line 81) | @Override
method launchPatternLock (line 101) | private void launchPatternLock() {
method writeLockTime (line 107) | private void writeLockTime() {
method writeLockTime (line 111) | private void writeLockTime(long time) {
method isLockEnabled (line 117) | protected boolean isLockEnabled() {
method setLockEnabled (line 121) | protected void setLockEnabled(boolean enabled) {
method onActivityResult (line 127) | protected void onActivityResult(int requestCode, int resultCode,
method onStop (line 139) | @Override
FILE: app/src/main/java/com/liato/bankdroid/MainActivity.java
class MainActivity (line 55) | public class MainActivity extends LockableActivity {
method onReceive (line 67) | @Override
method onCreate (line 75) | @Override
method onResume (line 142) | @Override
method refreshView (line 151) | public void refreshView() {
method onCreateOptionsMenu (line 160) | @Override
method onCreateDialog (line 169) | @Override
method onOptionsItemSelected (line 181) | @Override
method onDestroy (line 211) | @Override
class PopupMenuBank (line 224) | private static class PopupMenuBank extends BetterPopupWindow implement...
method PopupMenuBank (line 228) | public PopupMenuBank(final ViewGroup parentView, final View anchor, ...
method onCreate (line 233) | @Override
method onClick (line 265) | @Override
class PopupMenuAccount (line 339) | private static class PopupMenuAccount extends BetterPopupWindow implem...
method PopupMenuAccount (line 343) | public PopupMenuAccount(final ViewGroup parentView, final View ancho...
method onCreate (line 348) | @Override
method onClick (line 382) | @Override
FILE: app/src/main/java/com/liato/bankdroid/PairApplicationsActivity.java
class PairApplicationsActivity (line 39) | public class PairApplicationsActivity extends LockableActivity {
method initialSetupApiKey (line 43) | public static void initialSetupApiKey(Context ctx) {
method onCreate (line 59) | @Override
method onKeyDown (line 89) | @Override
method cancelPairing (line 101) | public void cancelPairing(final View v) {
method confirmPairing (line 106) | public void confirmPairing(final View v) {
FILE: app/src/main/java/com/liato/bankdroid/SettingsActivity.java
class SettingsActivity (line 42) | public class SettingsActivity extends LockablePreferenceActivity
method onCreate (line 54) | @Override
method onPreferenceClick (line 78) | @Override
method onActivityResult (line 144) | @Override
method onResume (line 165) | @Override
method onPause (line 171) | @Override
method onPreferenceChange (line 179) | @Override
FILE: app/src/main/java/com/liato/bankdroid/StartupReceiver.java
class StartupReceiver (line 31) | public class StartupReceiver extends BroadcastReceiver {
method setAlarm (line 33) | public static void setAlarm(Context context) {
method updateNow (line 58) | public static void updateNow(Context context) {
method onReceive (line 69) | @Override
FILE: app/src/main/java/com/liato/bankdroid/TimePreference.java
class TimePreference (line 13) | public class TimePreference extends DialogPreference {
method TimePreference (line 19) | public TimePreference(Context ctxt, AttributeSet attrs) {
method onCreateDialogView (line 26) | @Override
method onBindDialogView (line 33) | @Override
method onDialogClosed (line 41) | @Override
method onGetDefaultValue (line 54) | @Override
method onSetInitialValue (line 59) | @Override
FILE: app/src/main/java/com/liato/bankdroid/TransactionsActivity.java
class TransactionsActivity (line 40) | public class TransactionsActivity extends LockableActivity {
method onCreate (line 42) | @Override
method onResume (line 91) | @Override
method redirectToMain (line 96) | private void redirectToMain(String errorMessage) {
class TransactionsAdapter (line 103) | private class TransactionsAdapter extends BaseAdapter {
method TransactionsAdapter (line 109) | public TransactionsAdapter(List<Transaction> transactions) {
method newTransactionView (line 125) | public View newTransactionView(Transaction transaction, ViewGroup pa...
method newDateView (line 144) | public View newDateView(String date, ViewGroup parent, View convertV...
method getCount (line 152) | @Override
method getItem (line 157) | @Override
method getItemId (line 162) | @Override
method getView (line 167) | @Override
method areAllItemsEnabled (line 182) | @Override
method isEnabled (line 187) | @Override
method getViewTypeCount (line 192) | @Override
method getItemViewType (line 197) | @Override
FILE: app/src/main/java/com/liato/bankdroid/WebViewActivity.java
class WebViewActivity (line 48) | public class WebViewActivity extends LockableActivity implements OnClick...
method onCreate (line 57) | @Override
method onResume (line 149) | public void onResume() {
method onKeyDown (line 154) | @Override
method onClick (line 165) | @Override
class BankWebViewClient (line 178) | private class BankWebViewClient extends WebViewClient {
method onLoadResource (line 180) | @Override
method onPageFinished (line 189) | @Override
method onFormResubmission (line 208) | @Override
method shouldOverrideUrlLoading (line 216) | @Override
method handleHistoryChange (line 222) | public void handleHistoryChange() {
FILE: app/src/main/java/com/liato/bankdroid/adapters/AccountsAdapter.java
class AccountsAdapter (line 38) | public class AccountsAdapter extends BaseAdapter {
method AccountsAdapter (line 54) | public AccountsAdapter(Context context, boolean showHidden) {
method setGroups (line 61) | public void setGroups(ArrayList<Bank> banks) {
method setShowHidden (line 65) | public void setShowHidden(boolean showHidden) {
method newBankView (line 69) | private View newBankView(Bank bank, ViewGroup parent, View convertView) {
method newAccountView (line 96) | private View newAccountView(Account account, ViewGroup parent, View co...
method getCount (line 128) | @Override
method getItem (line 141) | @Override
method getItemId (line 167) | @Override
method getView (line 172) | @Override
method isEnabled (line 187) | @Override
method getViewTypeCount (line 195) | @Override
method getItemViewType (line 200) | @Override
FILE: app/src/main/java/com/liato/bankdroid/appwidget/AutoRefreshService.java
class AutoRefreshService (line 59) | public class AutoRefreshService extends Service {
method showNotification (line 79) | public static void showNotification(final Bank bank, final Account acc...
method broadcastTransactionUpdate (line 169) | public static void broadcastTransactionUpdate(final Context context,
method sendWidgetRefresh (line 176) | public static void sendWidgetRefresh(final Context context) {
method onStart (line 188) | @Override
method onStartCommand (line 194) | @Override
method handleStart (line 200) | private void handleStart() {
method shouldUpdateOnRoaming (line 215) | private boolean shouldUpdateOnRoaming(NetworkInfo ni) {
method InsideUpdatePeriod (line 224) | private boolean InsideUpdatePeriod() {
method onDestroy (line 243) | @Override
method onBind (line 247) | @Override
class DataRetrieverTask (line 252) | static class DataRetrieverTask extends AsyncTask<String, String, Void> {
method DataRetrieverTask (line 262) | protected DataRetrieverTask(AutoRefreshService autoRefreshService, S...
method DataRetrieverTask (line 267) | public DataRetrieverTask(AutoRefreshService autoRefreshService) {
method onPreExecute (line 272) | @Override
method getBanks (line 276) | protected List<Bank> getBanks() {
method getDBAdapter (line 280) | @NonNull
method sendWidgetRefresh (line 285) | protected void sendWidgetRefresh() {
method doInBackground (line 291) | @Override
method onProgressUpdate (line 415) | @Override
method onPostExecute (line 419) | @Override
FILE: app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider.java
class BankdroidWidgetProvider (line 52) | public abstract class BankdroidWidgetProvider extends AppWidgetProvider {
method updateAppWidget (line 60) | static void updateAppWidget(Context context, AppWidgetManager appWidge...
method updateAppWidget (line 68) | static void updateAppWidget(Context context, AppWidgetManager appWidge...
method unblurAppWidget (line 76) | static void unblurAppWidget(Context context, AppWidgetManager appWidge...
method blurAppWidget (line 93) | static void blurAppWidget(Context context, AppWidgetManager appWidgetM...
method buildAppWidget (line 110) | static RemoteViews buildAppWidget(Context context, AppWidgetManager ap...
method buildAppWidget (line 140) | static RemoteViews buildAppWidget(Context context, AppWidgetManager ap...
method disableAppWidget (line 218) | static RemoteViews disableAppWidget(Context context, AppWidgetManager ...
method onReceive (line 245) | public void onReceive(Context context, Intent intent) {
method onDeleted (line 270) | @Override
class WidgetService (line 279) | public static class WidgetService extends Service {
method onStart (line 281) | @Override
method onStartCommand (line 287) | @Override
method handleStart (line 293) | public void handleStart(Intent intent, int startId) {
method onBind (line 335) | @Override
class WidgetUpdateTask (line 341) | protected class WidgetUpdateTask extends AsyncTask<Void, Void, Void> {
method WidgetUpdateTask (line 351) | public WidgetUpdateTask(Context context, AppWidgetManager appWidge...
method onPreExecute (line 359) | @Override
method doInBackground (line 369) | @Override
method onPostExecute (line 408) | @Override
FILE: app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider_2x1.java
class BankdroidWidgetProvider_2x1 (line 20) | public class BankdroidWidgetProvider_2x1 extends BankdroidWidgetProvider {
FILE: app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider_4x1.java
class BankdroidWidgetProvider_4x1 (line 20) | public class BankdroidWidgetProvider_4x1 extends BankdroidWidgetProvider {
FILE: app/src/main/java/com/liato/bankdroid/appwidget/WidgetConfigureActivity.java
class WidgetConfigureActivity (line 39) | public class WidgetConfigureActivity extends LockableActivity {
method WidgetConfigureActivity (line 47) | public WidgetConfigureActivity() {
method setAccountBankId (line 52) | public static void setAccountBankId(Context context, int appWidgetId, ...
method getAccountId (line 60) | public static String getAccountId(Context context, int appWidgetId) {
method getBankId (line 65) | public static long getBankId(Context context, int appWidgetId) {
method delAccountId (line 70) | public static void delAccountId(Context context, int appWidgetId) {
method onCreate (line 77) | @Override
method onResume (line 82) | public void onResume() {
method refreshView (line 131) | private void refreshView() {
method shouldShowActionBar (line 145) | @Override
FILE: app/src/main/java/com/liato/bankdroid/banking/BankFactory.java
class BankFactory (line 43) | public class BankFactory {
method fromBanktypeId (line 45) | private static Bank fromBanktypeId(int id, Context context) throws Ban...
method listBanks (line 50) | public static List<Bank> listBanks(Context context) {
method bankFromDb (line 54) | @Nullable
method banksFromDb (line 83) | public static ArrayList<Bank> banksFromDb(Context context, boolean loa...
method accountFromDb (line 119) | @Nullable
method accountsFromDb (line 173) | private static ArrayList<Account> accountsFromDb(Context context, long...
method loadProperties (line 207) | private static Map<String, String> loadProperties(long bankId, Context...
method storeDecryptedProperties (line 262) | private static void storeDecryptedProperties(
FILE: app/src/main/java/com/liato/bankdroid/db/DBAdapter.java
class DBAdapter (line 36) | public class DBAdapter {
method DBAdapter (line 46) | public DBAdapter(Context ctx) {
method save (line 54) | @Deprecated
method disable (line 65) | @Deprecated
method createBank (line 71) | public long createBank(Bank bank) {
method deleteBank (line 80) | public int deleteBank(long bankId) {
method deleteAccounts (line 91) | public int deleteAccounts(long bankId) {
method deleteTransactions (line 96) | public int deleteTransactions(String account) {
method deleteProperties (line 101) | private int deleteProperties(long bankId) {
method fetchBanks (line 111) | public Cursor fetchBanks() {
method fetchAccounts (line 123) | public Cursor fetchAccounts(long bankId) {
method fetchTransactions (line 129) | public Cursor fetchTransactions(String account) {
method fetchProperties (line 135) | public Cursor fetchProperties(String bankId) {
method updateBank (line 140) | public long updateBank(Bank bank) {
method disableBank (line 208) | public void disableBank(long bankId) {
method getBank (line 217) | @Nullable
method getBank (line 229) | @Nullable
method getAccount (line 234) | @Nullable
FILE: app/src/main/java/com/liato/bankdroid/db/Database.java
class Database (line 3) | public class Database {
FILE: app/src/main/java/com/liato/bankdroid/db/DatabaseHelper.java
class DatabaseHelper (line 37) | final public class DatabaseHelper extends SQLiteOpenHelper {
method DatabaseHelper (line 41) | private DatabaseHelper(final Context context) {
method getHelper (line 46) | public static synchronized DatabaseHelper getHelper(Context context) {
method onCreate (line 53) | @Override
method onUpgrade (line 61) | @Override
method migrateProperties (line 89) | private void migrateProperties(final SQLiteDatabase db) {
FILE: app/src/main/java/com/liato/bankdroid/db/LegacyDatabase.java
class LegacyDatabase (line 3) | class LegacyDatabase {
method LegacyDatabase (line 127) | private LegacyDatabase() {
FILE: app/src/main/java/com/liato/bankdroid/liveview/LiveViewService.java
class LiveViewService (line 63) | public class LiveViewService extends Service {
method onServiceConnected (line 99) | @Override
method onServiceDisconnected (line 124) | @Override
method isAlreadyRunning (line 137) | public static boolean isAlreadyRunning() {
method onCreate (line 142) | public void onCreate() {
method onDestroy (line 151) | public void onDestroy() {
method onStart (line 165) | public void onStart(Intent intent, int startId) {
method onBind (line 206) | @Override
method connectToLiveView (line 215) | private void connectToLiveView() {
method openInPhone (line 232) | protected void openInPhone(String openInPhoneAction) {
class LiveViewCallback (line 242) | private class LiveViewCallback extends IPluginServiceCallbackV1.Stub {
method getPluginName (line 247) | public String getPluginName() throws RemoteException {
method openInPhone (line 252) | public void openInPhone(final String openInPhoneAction) throws Remot...
method startPlugin (line 261) | public void startPlugin() throws RemoteException {
method stopPlugin (line 264) | public void stopPlugin() throws RemoteException {
method onUnregistered (line 267) | public void onUnregistered() throws RemoteException {
method displayCaps (line 270) | public void displayCaps(int displayWidthPixels, int displayHeigthPix...
method button (line 274) | public void button(String buttonType, boolean doublepress,
method screenMode (line 278) | public void screenMode(int screenMode) throws RemoteException {
FILE: app/src/main/java/com/liato/bankdroid/liveview/PluginConstants.java
class PluginConstants (line 47) | public final class PluginConstants {
method PluginConstants (line 68) | private PluginConstants() {
FILE: app/src/main/java/com/liato/bankdroid/liveview/PluginReceiver.java
class PluginReceiver (line 56) | public class PluginReceiver extends BroadcastReceiver {
method onReceive (line 58) | @Override
FILE: app/src/main/java/com/liato/bankdroid/liveview/PluginUtils.java
class PluginUtils (line 58) | public final class PluginUtils {
method PluginUtils (line 60) | private PluginUtils() {
method storeIconToFile (line 71) | public static String storeIconToFile(Context ctx, Resources resources,...
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPattern.java
class ChooseLockPattern (line 44) | public class ChooseLockPattern extends Activity implements View.OnClickL...
method run (line 98) | public void run() {
method onPatternStart (line 110) | public void onPatternStart() {
method onPatternCleared (line 115) | public void onPatternCleared() {
method onPatternDetected (line 119) | public void onPatternDetected(List<LockPatternView.Cell> pattern) {
method patternInProgress (line 143) | private void patternInProgress() {
method onCreate (line 151) | @Override
method setupViews (line 188) | protected void setupViews() {
method onClick (line 206) | public void onClick(View v) {
method onKeyDown (line 247) | @Override
method confirmPattern (line 268) | protected void confirmPattern() {
method onActivityResult (line 277) | @Override
method onSaveInstanceState (line 293) | @Override
method updateStage (line 309) | protected void updateStage(Stage stage) {
method postClearPatternRunnable (line 378) | private void postClearPatternRunnable() {
method saveChosenPatternAndFinish (line 383) | private void saveChosenPatternAndFinish() {
type LeftButtonMode (line 402) | enum LeftButtonMode {
method LeftButtonMode (line 417) | LeftButtonMode(int text, boolean enabled) {
type RightButtonMode (line 427) | enum RightButtonMode {
method RightButtonMode (line 442) | RightButtonMode(int text, boolean enabled) {
type Stage (line 451) | protected enum Stage {
method Stage (line 496) | Stage(int headerMessage,
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPatternExample.java
class ChooseLockPatternExample (line 29) | public class ChooseLockPatternExample extends Activity implements View.O...
method run (line 42) | public void run() {
method onCreate (line 49) | @Override
method onResume (line 56) | @Override
method onPause (line 62) | @Override
method onClick (line 68) | public void onClick(View v) {
method onActivityResult (line 80) | @Override
method initViews (line 88) | private void initViews() {
method startAnimation (line 101) | protected void startAnimation(final AnimationDrawable animation) {
method stopAnimation (line 107) | protected void stopAnimation(final AnimationDrawable animation) {
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPatternTutorial.java
class ChooseLockPatternTutorial (line 26) | public class ChooseLockPatternTutorial extends Activity implements View....
method onCreate (line 34) | @Override
method initViews (line 49) | private void initViews() {
method onClick (line 57) | public void onClick(View v) {
method onActivityResult (line 68) | @Override
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/ConfirmLockPattern.java
class ConfirmLockPattern (line 41) | public class ConfirmLockPattern extends Activity {
method run (line 84) | public void run() {
method onPatternStart (line 96) | public void onPatternStart() {
method onPatternCleared (line 100) | public void onPatternCleared() {
method onPatternDetected (line 104) | public void onPatternDetected(List<LockPatternView.Cell> pattern) {
method onCreate (line 122) | @Override
method onSaveInstanceState (line 171) | @Override
method onPause (line 178) | @Override
method onKeyDown (line 187) | public boolean onKeyDown(int keyCode, KeyEvent event) {
method onResume (line 198) | @Override
method updateStage (line 209) | private void updateStage(Stage stage) {
method postClearPatternRunnable (line 254) | private void postClearPatternRunnable() {
method handleAttemptLockout (line 259) | private void handleAttemptLockout(long elapsedRealtimeDeadline) {
method finish (line 284) | @Override
type Stage (line 290) | private enum Stage {
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/LinearLayoutWithDefaultTouchRecepient.java
class LinearLayoutWithDefaultTouchRecepient (line 34) | public class LinearLayoutWithDefaultTouchRecepient extends LinearLayout {
method LinearLayoutWithDefaultTouchRecepient (line 40) | public LinearLayoutWithDefaultTouchRecepient(Context context) {
method LinearLayoutWithDefaultTouchRecepient (line 44) | public LinearLayoutWithDefaultTouchRecepient(Context context, Attribut...
method setDefaultTouchRecepient (line 48) | public void setDefaultTouchRecepient(View defaultTouchRecepient) {
method dispatchTouchEvent (line 52) | @Override
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/LockPatternUtils.java
class LockPatternUtils (line 45) | public class LockPatternUtils {
method LockPatternUtils (line 96) | public LockPatternUtils(Context context) {
method stringToPattern (line 113) | public static List<LockPatternView.Cell> stringToPattern(String string) {
method patternToString (line 130) | public static String patternToString(List<LockPatternView.Cell> patter...
method patternToHash (line 151) | static byte[] patternToHash(List<LockPatternView.Cell> pattern) {
method checkPattern (line 178) | public boolean checkPattern(List<LockPatternView.Cell> pattern) {
method savedPatternExists (line 202) | public boolean savedPatternExists() {
method isPatternEverChosen (line 222) | public boolean isPatternEverChosen() {
method saveLockPattern (line 231) | public void saveLockPattern(List<LockPatternView.Cell> pattern) {
method isLockPatternEnabled (line 262) | public boolean isLockPatternEnabled() {
method setLockPatternEnabled (line 269) | public void setLockPatternEnabled(boolean enabled) {
method isVisiblePatternEnabled (line 276) | public boolean isVisiblePatternEnabled() {
method setVisiblePatternEnabled (line 283) | public void setVisiblePatternEnabled(boolean enabled) {
method isTactileFeedbackEnabled (line 290) | public boolean isTactileFeedbackEnabled() {
method setTactileFeedbackEnabled (line 297) | public void setTactileFeedbackEnabled(boolean enabled) {
method setLockoutAttemptDeadline (line 307) | public long setLockoutAttemptDeadline() {
method getLockoutAttemptDeadline (line 318) | public long getLockoutAttemptDeadline() {
method isPermanentlyLocked (line 332) | public boolean isPermanentlyLocked() {
method setPermanentlyLocked (line 346) | public void setPermanentlyLocked(boolean locked) {
method getNextAlarm (line 359) | public String getNextAlarm() {
method getBoolean (line 368) | private boolean getBoolean(String systemSettingKey) {
method setBoolean (line 372) | private void setBoolean(String systemSettingKey, boolean enabled) {
method getLong (line 378) | private long getLong(String systemSettingKey, long def) {
method setLong (line 382) | private void setLong(String systemSettingKey, long value) {
FILE: app/src/main/java/com/liato/bankdroid/lockpattern/LockPatternView.java
class LockPatternView (line 50) | public class LockPatternView extends View {
method LockPatternView (line 147) | public LockPatternView(Context context) {
method LockPatternView (line 151) | public LockPatternView(Context context, AttributeSet attrs) {
method getBitmapFor (line 183) | private Bitmap getBitmapFor(int resId) {
method isInStealthMode (line 190) | public boolean isInStealthMode() {
method setInStealthMode (line 200) | public void setInStealthMode(boolean inStealthMode) {
method isTactileFeedbackEnabled (line 207) | public boolean isTactileFeedbackEnabled() {
method setTactileFeedbackEnabled (line 217) | public void setTactileFeedbackEnabled(boolean tactileFeedbackEnabled) {
method setOnPatternListener (line 226) | public void setOnPatternListener(
method setPattern (line 238) | public void setPattern(DisplayMode displayMode, List<Cell> pattern) {
method setDisplayMode (line 256) | public void setDisplayMode(DisplayMode displayMode) {
method clearPattern (line 275) | public void clearPattern() {
method resetPattern (line 282) | private void resetPattern() {
method clearPatternDrawLookup (line 292) | private void clearPatternDrawLookup() {
method disableInput (line 304) | public void disableInput() {
method enableInput (line 311) | public void enableInput() {
method onSizeChanged (line 315) | @Override
method onMeasure (line 324) | @Override
method detectAndAddHit (line 340) | private Cell detectAndAddHit(float x, float y) {
method addCellToPattern (line 379) | private void addCellToPattern(Cell newCell) {
method checkForNewHit (line 385) | private Cell checkForNewHit(float x, float y) {
method getRowHit (line 408) | private int getRowHit(float y) {
method getColumnHit (line 430) | private int getColumnHit(float x) {
method onTouchEvent (line 445) | @Override
method getCenterXForColumn (line 639) | private float getCenterXForColumn(int column) {
method getCenterYForRow (line 643) | private float getCenterYForRow(int row) {
method onDraw (line 647) | @Override
method drawArrow (line 777) | private void drawArrow(Canvas canvas, float leftX, float topY, Cell st...
method drawCircle (line 812) | private void drawCircle(Canvas canvas, int leftX, int topY, boolean pa...
method onSaveInstanceState (line 850) | @Override
method onRestoreInstanceState (line 859) | @Override
type DisplayMode (line 875) | public enum DisplayMode {
type OnPatternListener (line 896) | public interface OnPatternListener {
method onPatternStart (line 901) | void onPatternStart();
method onPatternCleared (line 906) | void onPatternCleared();
method onPatternDetected (line 913) | void onPatternDetected(List<Cell> pattern);
class Cell (line 919) | public static class Cell {
method Cell (line 940) | private Cell(int row, int column) {
method of (line 950) | public static synchronized Cell of(int row, int column) {
method checkRange (line 955) | private static void checkRange(int row, int column) {
method getRow (line 964) | public int getRow() {
method getColumn (line 968) | public int getColumn() {
method toString (line 972) | public String toString() {
class SavedState (line 980) | private static class SavedState extends BaseSavedState {
method createFromParcel (line 984) | public SavedState createFromParcel(Parcel in) {
method newArray (line 988) | public SavedState[] newArray(int size) {
method SavedState (line 1006) | private SavedState(Parcelable superState, String serializedPattern, ...
method SavedState (line 1019) | private SavedState(Parcel in) {
method getSerializedPattern (line 1028) | public String getSerializedPattern() {
method getDisplayMode (line 1032) | public int getDisplayMode() {
method isInputEnabled (line 1036) | public boolean isInputEnabled() {
method isInStealthMode (line 1040) | public boolean isInStealthMode() {
method isTactileFeedbackEnabled (line 1044) | public boolean isTactileFeedbackEnabled() {
method writeToParcel (line 1048) | @Override
FILE: app/src/main/java/com/liato/bankdroid/provider/BankTransactionsProvider.java
class BankTransactionsProvider (line 47) | public class BankTransactionsProvider extends ContentProvider implements
method getApiKey (line 112) | public static String getApiKey(final Context ctx) {
method delete (line 132) | @Override
method getType (line 142) | @Override
method insert (line 159) | @Override
method onCreate (line 168) | @Override
method query (line 177) | @Override
method update (line 230) | @Override
method isApiKeyEnabled (line 237) | private boolean isApiKeyEnabled(final Context ctx) {
FILE: app/src/main/java/com/liato/bankdroid/utils/EmulatorUtils.java
class EmulatorUtils (line 10) | class EmulatorUtils {
method EmulatorUtils (line 14) | private EmulatorUtils() {
method isRunningOnEmulator (line 17) | private static boolean isRunningOnEmulator() {
method isRunningOnAndroid (line 40) | private static boolean isRunningOnAndroid() {
FILE: app/src/main/java/com/liato/bankdroid/utils/LoggingUtils.java
class LoggingUtils (line 17) | public class LoggingUtils {
method LoggingUtils (line 24) | private LoggingUtils() {
method createLogger (line 27) | public static void createLogger(Context context) {
method isCrashlyticsEnabled (line 39) | private static boolean isCrashlyticsEnabled() {
method logCustom (line 44) | public static void logCustom(CustomEvent event) {
method logDisabledBank (line 53) | public static void logDisabledBank(Bank bank) {
method logBankUpdate (line 62) | public static void logBankUpdate(Bank bank, boolean withTransactions) {
class CrashlyticsTree (line 83) | private static class CrashlyticsTree extends Timber.Tree {
method CrashlyticsTree (line 84) | CrashlyticsTree(Context context) {
method log (line 88) | @Override
class LocalTree (line 106) | private static class LocalTree extends Timber.Tree {
method log (line 107) | @Override
FILE: app/src/main/java/com/liato/bankdroid/utils/NetworkUtils.java
class NetworkUtils (line 8) | public class NetworkUtils {
method NetworkUtils (line 10) | private NetworkUtils() {
method isInternetAvailable (line 13) | public static boolean isInternetAvailable() {
method ping (line 18) | private static boolean ping(byte[] ipAddress, int timeout) {
FILE: app/src/main/java/net/margaritov/preference/colorpicker/AlphaPatternDrawable.java
class AlphaPatternDrawable (line 34) | public class AlphaPatternDrawable extends Drawable {
method AlphaPatternDrawable (line 53) | public AlphaPatternDrawable(int rectangleSize) {
method draw (line 59) | @Override
method getOpacity (line 64) | @Override
method setAlpha (line 69) | @Override
method setColorFilter (line 74) | @Override
method onBoundsChange (line 79) | @Override
method generatePatternBitmap (line 100) | private void generatePatternBitmap() {
FILE: app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerDialog.java
class ColorPickerDialog (line 30) | public class ColorPickerDialog
method ColorPickerDialog (line 45) | public ColorPickerDialog(ViewGroup parent, Context context, int initia...
method init (line 53) | private void init(int color) {
method setUp (line 61) | private void setUp(int color) {
method onColorChanged (line 91) | @Override
method setAlphaSliderVisible (line 104) | public void setAlphaSliderVisible(boolean visible) {
method setOnColorChangedListener (line 112) | public void setOnColorChangedListener(OnColorChangedListener listener) {
method getColor (line 116) | public int getColor() {
method onClick (line 120) | @Override
type OnColorChangedListener (line 130) | public interface OnColorChangedListener {
method onColorChanged (line 132) | void onColorChanged(int color);
FILE: app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerPanelView.java
class ColorPickerPanelView (line 33) | public class ColorPickerPanelView extends View {
method ColorPickerPanelView (line 58) | public ColorPickerPanelView(Context context) {
method ColorPickerPanelView (line 62) | public ColorPickerPanelView(Context context, AttributeSet attrs) {
method ColorPickerPanelView (line 66) | public ColorPickerPanelView(Context context, AttributeSet attrs, int d...
method init (line 71) | private void init() {
method onDraw (line 78) | @Override
method onMeasure (line 97) | @Override
method onSizeChanged (line 106) | @Override
method setUpColorRect (line 120) | private void setUpColorRect() {
method getColor (line 144) | public int getColor() {
method setColor (line 151) | public void setColor(int color) {
method getBorderColor (line 159) | public int getBorderColor() {
method setBorderColor (line 166) | public void setBorderColor(int color) {
FILE: app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerPreference.java
class ColorPickerPreference (line 37) | public class ColorPickerPreference
method ColorPickerPreference (line 58) | public ColorPickerPreference(Context context) {
method ColorPickerPreference (line 63) | public ColorPickerPreference(Context context, AttributeSet attrs) {
method ColorPickerPreference (line 68) | public ColorPickerPreference(Context context, AttributeSet attrs, int ...
method convertToARGB (line 78) | public static String convertToARGB(int color) {
method convertToColorInt (line 108) | public static int convertToColorInt(String argb) throws NumberFormatEx...
method onSetInitialValue (line 131) | @Override
method init (line 136) | private void init(Context context, AttributeSet attrs) {
method onCreateView (line 160) | @Override
method onBindView (line 166) | @Override
method setPreviewColor (line 173) | private void setPreviewColor() {
method getPreviewBitmap (line 200) | private Bitmap getPreviewBitmap() {
method getValue (line 220) | public int getValue() {
method onColorChanged (line 232) | @Override
method onPreferenceClick (line 245) | @Override
method setAlphaSliderEnabled (line 260) | public void setAlphaSliderEnabled(boolean enable) {
FILE: app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerView.java
class ColorPickerView (line 44) | public class ColorPickerView extends View {
method ColorPickerView (line 157) | public ColorPickerView(Context context) {
method ColorPickerView (line 161) | public ColorPickerView(Context context, AttributeSet attrs) {
method ColorPickerView (line 165) | public ColorPickerView(Context context, AttributeSet attrs, int defSty...
method init (line 170) | private void init() {
method initPaintTools (line 190) | private void initPaintTools() {
method calculateRequiredOffset (line 218) | private float calculateRequiredOffset() {
method buildHueColorArray (line 225) | private int[] buildHueColorArray() {
method onDraw (line 237) | @Override
method drawSatValPanel (line 250) | private void drawSatValPanel(Canvas canvas) {
method drawHuePanel (line 285) | private void drawHuePanel(Canvas canvas) {
method drawAlphaPanel (line 320) | private void drawAlphaPanel(Canvas canvas) {
method hueToPoint (line 369) | private Point hueToPoint(float hue) {
method satValToPoint (line 382) | private Point satValToPoint(float sat, float val) {
method alphaToPoint (line 396) | private Point alphaToPoint(int alpha) {
method pointToSatVal (line 410) | private float[] pointToSatVal(float x, float y) {
method pointToHue (line 440) | private float pointToHue(float y) {
method pointToAlpha (line 457) | private int pointToAlpha(int x) {
method onTrackballEvent (line 474) | @Override
method onTouchEvent (line 566) | @Override
method moveTrackersIfNeeded (line 610) | private boolean moveTrackersIfNeeded(MotionEvent event) {
method onMeasure (line 649) | @Override
method chooseWidth (line 691) | private int chooseWidth(int mode, int size) {
method chooseHeight (line 699) | private int chooseHeight(int mode, int size) {
method getPrefferedWidth (line 707) | private int getPrefferedWidth() {
method getPrefferedHeight (line 719) | private int getPrefferedHeight() {
method onSizeChanged (line 730) | @Override
method setUpSatValRect (line 745) | private void setUpSatValRect() {
method setUpHueRect (line 762) | private void setUpHueRect() {
method setUpAlphaRect (line 774) | private void setUpAlphaRect() {
method setOnColorChangedListener (line 803) | public void setOnColorChangedListener(OnColorChangedListener listener) {
method getBorderColor (line 810) | public int getBorderColor() {
method setBorderColor (line 817) | public void setBorderColor(int color) {
method getColor (line 827) | public int getColor() {
method setColor (line 836) | public void setColor(int color) {
method setColor (line 847) | public void setColor(int color, boolean callback) {
method getDrawingOffset (line 879) | public float getDrawingOffset() {
method setAlphaSliderVisible (line 887) | public void setAlphaSliderVisible(boolean visible) {
method getSliderTrackerColor (line 907) | public int getSliderTrackerColor() {
method setSliderTrackerColor (line 911) | public void setSliderTrackerColor(int color) {
method setAlphaSliderText (line 925) | public void setAlphaSliderText(int res) {
method getAlphaSliderText (line 935) | public String getAlphaSliderText() {
method setAlphaSliderText (line 945) | public void setAlphaSliderText(String text) {
type OnColorChangedListener (line 950) | public interface OnColorChangedListener {
method onColorChanged (line 952) | void onColorChanged(int color);
FILE: app/src/main/java/net/sf/andhsli/hotspotlogin/SimpleCrypto.java
class SimpleCrypto (line 32) | public class SimpleCrypto {
method decrypt (line 33) | public static String decrypt(String seed, String encrypted) throws Exc...
method getRawKey (line 40) | private static byte[] getRawKey(byte[] seed) throws Exception {
method decrypt (line 55) | private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exc...
method toByte (line 63) | private static byte[] toByte(String hexString) {
FILE: app/src/test/java/com/liato/bankdroid/DataRetrieverTaskTest.java
class DataRetrieverTaskTest (line 16) | public class DataRetrieverTaskTest {
class TestableDataRetrieverTask (line 20) | private static class TestableDataRetrieverTask extends DataRetrieverTa...
method publishProgress (line 24) | @Override
method getBankFromDb (line 29) | @Override
method getBanksFromDb (line 35) | @Override
method saveBank (line 40) | @Override
method isContentProviderEnabled (line 45) | @Override
method getDialog (line 50) | @NonNull
method TestableDataRetrieverTask (line 59) | public TestableDataRetrieverTask(Bank bank) {
method TestableDataRetrieverTask (line 69) | public TestableDataRetrieverTask(Bank[] allBanks) {
method testUpdateSingleDisabledBank (line 77) | @Test
method testUpdateSingleEnabledBank (line 93) | @Test
method testUpdateMultiDisabledBank (line 105) | @Test
method testUpdateMultiEnabledBank (line 117) | @Test
FILE: app/src/test/java/com/liato/bankdroid/appwidget/DataRetrieverTaskTest.java
class DataRetrieverTaskTest (line 20) | public class DataRetrieverTaskTest {
class TestableBank (line 21) | private static class TestableBank extends Bank {
method TestableBank (line 26) | public TestableBank(int balanceBeforeUpdate, int balanceAfterUpdate) {
method update (line 33) | @Override
method getAccounts (line 38) | @Override
method getBalance (line 56) | @Override
method getBanktypeId (line 61) | @Override
method getName (line 66) | @Override
class TestableDataRetrieverTask (line 72) | private static class TestableDataRetrieverTask extends AutoRefreshServ...
method TestableDataRetrieverTask (line 76) | private TestableDataRetrieverTask(
method getBanks (line 83) | @Override
method getDBAdapter (line 90) | @NonNull
method sendWidgetRefresh (line 96) | @Override
method testIncreaseLessThanNotificationThreshold (line 102) | @Test
method testNoChange (line 116) | @Test
FILE: bankdroid-core/src/main/java/com/liato/bankdroid/configuration/DefaultConnectionConfiguration.java
class DefaultConnectionConfiguration (line 11) | public class DefaultConnectionConfiguration {
method createConfiguration (line 17) | private static List<Field> createConfiguration() {
method fields (line 26) | public static List<Field> fields() {
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/Provider.java
type Provider (line 8) | public interface Provider {
method getId (line 14) | String getId();
method getName (line 20) | String getName();
method isBroken (line 26) | boolean isBroken();
method getConfiguration (line 32) | ProviderConfiguration getConfiguration();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/ProviderFactory.java
type ProviderFactory (line 7) | public interface ProviderFactory {
method create (line 13) | Provider create();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/Entry.java
class Entry (line 3) | public class Entry {
method Entry (line 8) | public Entry(String key, String value) {
method getKey (line 16) | public String getKey() {
method getValue (line 20) | public String getValue() {
method toString (line 24) | @Override
method equals (line 29) | @Override
method hashCode (line 41) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/Field.java
type Field (line 8) | public interface Field {
method getReference (line 15) | String getReference();
method getPlaceholder (line 25) | String getPlaceholder();
method getLabel (line 32) | String getLabel();
method getFieldType (line 39) | FieldType getFieldType();
method isRequired (line 48) | boolean isRequired();
method isHidden (line 55) | boolean isHidden();
method isSecret (line 63) | boolean isSecret();
method getValues (line 70) | List<Entry> getValues();
method validate (line 80) | void validate(String value) throws IllegalArgumentException;
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldBuilder.java
class FieldBuilder (line 11) | public class FieldBuilder {
method FieldBuilder (line 18) | public FieldBuilder(String reference) {
method FieldBuilder (line 34) | public FieldBuilder(String reference, ResourceBundle bundle) {
method build (line 41) | public Field build() {
method label (line 45) | public FieldBuilder label(String label) {
method placeholder (line 50) | public FieldBuilder placeholder(String placeholder) {
method fieldType (line 55) | public FieldBuilder fieldType(FieldType fieldType) {
method required (line 60) | public FieldBuilder required(boolean required) {
method hidden (line 65) | public FieldBuilder hidden(boolean hidden) {
method secret (line 70) | public FieldBuilder secret(boolean secret) {
method values (line 75) | public FieldBuilder values(List<Entry> values) {
method validator (line 80) | public FieldBuilder validator(FieldValidator validator) {
class BasicField (line 85) | private static class BasicField implements Field {
method BasicField (line 107) | BasicField(String reference, ResourceBundle bundle) {
method getReference (line 112) | @Override
method getPlaceholder (line 117) | @Override
method getLabel (line 122) | @Override
method getFieldType (line 127) | @Override
method isRequired (line 132) | @Override
method isHidden (line 137) | @Override
method isSecret (line 142) | @Override
method getValues (line 147) | @Override
method validate (line 155) | @Override
method getLocaleString (line 167) | private String getLocaleString(String key) {
method isLocale (line 176) | private boolean isLocale() {
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldType.java
type FieldType (line 3) | public enum FieldType {
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldValidator.java
type FieldValidator (line 3) | public interface FieldValidator {
method validate (line 11) | void validate(String value);
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/ProviderConfiguration.java
type ProviderConfiguration (line 8) | public interface ProviderConfiguration {
method getConnectionConfiguration (line 15) | List<Field> getConnectionConfiguration();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/ProviderConnection.java
type ProviderConnection (line 11) | public interface ProviderConnection {
method getName (line 17) | String getName();
method getTotalBalance (line 26) | BigDecimal getTotalBalance();
method getDefaultCurrency (line 32) | String getDefaultCurrency();
method getAccounts (line 38) | Collection<Account> getAccounts();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Account.java
type Account (line 9) | public interface Account {
method getId (line 15) | String getId();
method getName (line 21) | String getName();
method getBalance (line 27) | BigDecimal getBalance();
method getCurrency (line 33) | String getCurrency();
method getCustomAttributes (line 40) | Map<String, String> getCustomAttributes();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/CreditCardAccount.java
type CreditCardAccount (line 9) | public interface CreditCardAccount extends Account {
method getCreditLimit (line 15) | BigDecimal getCreditLimit();
method getTransactions (line 21) | Collection<Transaction> getTransactions();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Equity.java
type Equity (line 8) | public interface Equity {
method getName (line 14) | String getName();
method getCurrency (line 20) | String getCurrency();
method getQuantity (line 26) | double getQuantity();
method getCost (line 32) | BigDecimal getCost();
method getRevenue (line 38) | BigDecimal getRevenue();
method getRevenueAsPercentage (line 46) | double getRevenueAsPercentage();
method getBalance (line 52) | BigDecimal getBalance();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/EquityAccount.java
type EquityAccount (line 9) | public interface EquityAccount extends Account {
method getCost (line 15) | BigDecimal getCost();
method getRevenue (line 21) | BigDecimal getRevenue();
method getRevenueAsPercentage (line 27) | double getRevenueAsPercentage();
method getEquities (line 33) | Collection<Equity> getEquities();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/LiabilityAccount.java
type LiabilityAccount (line 8) | public interface LiabilityAccount extends Account {
method getInterest (line 14) | double getInterest();
method getPayments (line 20) | Collection<Payment> getPayments();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Payment.java
type Payment (line 10) | public interface Payment {
method getDueDate (line 16) | DateTime getDueDate();
method getAmount (line 22) | BigDecimal getAmount();
method getCurrency (line 28) | String getCurrency();
method getDescription (line 34) | String getDescription();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/PrePaidCardAccount.java
type PrePaidCardAccount (line 8) | public interface PrePaidCardAccount extends Account {
method getExpirationDate (line 14) | DateTime getExpirationDate();
method getValidFrom (line 20) | DateTime getValidFrom();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Transaction.java
type Transaction (line 10) | public interface Transaction {
method getAmount (line 16) | BigDecimal getAmount();
method getCurrency (line 22) | String getCurrency();
method getDescription (line 28) | String getDescription();
method getTransactionDate (line 34) | DateTime getTransactionDate();
method isPending (line 40) | boolean isPending();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/TransactionAccount.java
type TransactionAccount (line 8) | public interface TransactionAccount extends Account {
method getTransactions (line 14) | Collection<Transaction> getTransactions();
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/AbstractAccountBuilder.java
class AbstractAccountBuilder (line 7) | abstract class AbstractAccountBuilder<T extends AbstractAccountBuilder<T...
method AbstractAccountBuilder (line 15) | protected AbstractAccountBuilder(String id, String name, String curren...
method self (line 24) | protected abstract T self();
method name (line 26) | public T name(String name) {
method balance (line 31) | public T balance(BigDecimal balance) {
method addCustomAttribute (line 36) | public T addCustomAttribute(String key, String value) {
method customAttributes (line 44) | public T customAttributes(Map<String, String> customAttributes) {
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/AccountBuilder.java
class AccountBuilder (line 9) | public class AccountBuilder extends AbstractAccountBuilder<AccountBuilde...
method AccountBuilder (line 11) | public AccountBuilder(String id, String name, String currency) {
method self (line 15) | protected AccountBuilder self() {
method build (line 19) | public Account build() {
class BasicAccount (line 23) | static class BasicAccount implements Account {
method BasicAccount (line 31) | protected BasicAccount(String id, String name, String currency, BigD...
method getId (line 39) | @Override
method getName (line 44) | @Override
method getBalance (line 49) | @Override
method getCurrency (line 54) | @Override
method getCustomAttributes (line 59) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/CreditCardAccountBuilder.java
class CreditCardAccountBuilder (line 13) | public class CreditCardAccountBuilder extends AbstractAccountBuilder<Cre...
method CreditCardAccountBuilder (line 19) | public CreditCardAccountBuilder(String id, String name, String currenc...
method self (line 23) | protected CreditCardAccountBuilder self() {
method creditLimit (line 27) | public CreditCardAccountBuilder creditLimit(BigDecimal creditLimit) {
method transactions (line 32) | public CreditCardAccountBuilder transactions(Collection<Transaction> t...
method build (line 37) | public CreditCardAccount build() {
class BasicCreditCardAccount (line 42) | private class BasicCreditCardAccount extends BasicAccount implements C...
method BasicCreditCardAccount (line 47) | BasicCreditCardAccount(String id, String name, String currency, BigD...
method getCreditLimit (line 55) | @Override
method getTransactions (line 60) | public Collection<Transaction> getTransactions() {
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/EquityAccountBuilder.java
class EquityAccountBuilder (line 14) | public class EquityAccountBuilder extends AbstractAccountBuilder<EquityA...
method EquityAccountBuilder (line 22) | public EquityAccountBuilder(String id, String name, String currency) {
method self (line 26) | protected EquityAccountBuilder self() {
method cost (line 30) | public EquityAccountBuilder cost(BigDecimal cost) {
method revenue (line 35) | public EquityAccountBuilder revenue(BigDecimal revenue) {
method addEquity (line 40) | public EquityAccountBuilder addEquity(Equity equity) {
method equities (line 48) | public EquityAccountBuilder equities(Collection<Equity> equities) {
method build (line 53) | public EquityAccount build() {
class BasicEquityAccount (line 58) | private class BasicEquityAccount extends BasicAccount implements Equit...
method BasicEquityAccount (line 64) | private BasicEquityAccount(String id, String name, String currency, ...
method getBalance (line 73) | @Override
method getCost (line 79) | @Override
method getRevenue (line 85) | @Override
method getRevenueAsPercentage (line 91) | @Override
method getEquities (line 96) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/EquityBuilder.java
class EquityBuilder (line 6) | public class EquityBuilder {
method EquityBuilder (line 10) | public EquityBuilder(BigDecimal cost, BigDecimal revenue, String curre...
method EquityBuilder (line 22) | public EquityBuilder(BigDecimal balance, double revenue, String curren...
method name (line 27) | public EquityBuilder name(String name) {
method quantity (line 32) | public EquityBuilder quantity(double quantity) {
method build (line 37) | public Equity build() {
method costFromBalanceAndRevenue (line 41) | private BigDecimal costFromBalanceAndRevenue(BigDecimal balance, doubl...
method revenueFromBalanceAndRevenueAsPerecntage (line 45) | private BigDecimal revenueFromBalanceAndRevenueAsPerecntage(BigDecimal...
class BasicEquity (line 50) | private static class BasicEquity implements Equity {
method BasicEquity (line 62) | private BasicEquity(BigDecimal cost, BigDecimal revenue, String curr...
method getName (line 68) | @Override
method getCurrency (line 73) | @Override
method getQuantity (line 78) | @Override
method getCost (line 83) | @Override
method getRevenue (line 88) | @Override
method getRevenueAsPercentage (line 93) | @Override
method getBalance (line 98) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/LiabilityAccountBuilder.java
class LiabilityAccountBuilder (line 14) | public class LiabilityAccountBuilder extends AbstractAccountBuilder<Liab...
method LiabilityAccountBuilder (line 19) | public LiabilityAccountBuilder(String id, String name, String currency) {
method self (line 23) | protected LiabilityAccountBuilder self() {
method interest (line 27) | public LiabilityAccountBuilder interest(double interest) {
method addPayment (line 32) | public LiabilityAccountBuilder addPayment(Payment payment) {
method payments (line 40) | public LiabilityAccountBuilder payments(Collection<Payment> payments) {
method build (line 45) | public LiabilityAccount build() {
class BasicLiabilityAccount (line 50) | private static class BasicLiabilityAccount extends BasicAccount implem...
method BasicLiabilityAccount (line 55) | private BasicLiabilityAccount(String id, String name, String currenc...
method getInterest (line 62) | @Override
method getPayments (line 67) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/PrePaidCardAccountBuilder.java
class PrePaidCardAccountBuilder (line 12) | public class PrePaidCardAccountBuilder extends AbstractAccountBuilder<Pr...
method PrePaidCardAccountBuilder (line 17) | public PrePaidCardAccountBuilder(String id, String name, String curren...
method self (line 21) | protected PrePaidCardAccountBuilder self() {
method validFrom (line 25) | public PrePaidCardAccountBuilder validFrom(DateTime validFrom) {
method expirationDate (line 29) | public PrePaidCardAccountBuilder expirationDate(DateTime expirationDat...
method build (line 34) | public PrePaidCardAccount build() {
class BasicPrePaidCardAccount (line 39) | private static class BasicPrePaidCardAccount extends BasicAccount impl...
method BasicPrePaidCardAccount (line 44) | private BasicPrePaidCardAccount(String id, String name, String curre...
method getExpirationDate (line 51) | @Override
method getValidFrom (line 56) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/TransactionAccountBuilder.java
class TransactionAccountBuilder (line 14) | public class TransactionAccountBuilder extends AbstractAccountBuilder<Tr...
method TransactionAccountBuilder (line 18) | public TransactionAccountBuilder(String id, String name, String curren...
method self (line 22) | protected TransactionAccountBuilder self() {
method addTransaction (line 26) | public TransactionAccountBuilder addTransaction(Transaction transactio...
method transactions (line 34) | public TransactionAccountBuilder transactions(Collection<Transaction> ...
method build (line 39) | public TransactionAccount build() {
class BasicTransactionAccount (line 44) | private static class BasicTransactionAccount extends BasicAccount impl...
method BasicTransactionAccount (line 48) | private BasicTransactionAccount(String id, String name, String curre...
method getTransactions (line 54) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/TransactionBuilder.java
class TransactionBuilder (line 10) | public class TransactionBuilder {
method TransactionBuilder (line 14) | public TransactionBuilder(BigDecimal amount, String currency, DateTime...
method description (line 18) | public TransactionBuilder description(String description) {
method pending (line 23) | public TransactionBuilder pending(boolean pending) {
method build (line 28) | public Transaction build() {
class BasicTransaction (line 32) | private static class BasicTransaction implements Transaction {
method BasicTransaction (line 40) | private BasicTransaction(BigDecimal amount, String currency, DateTim...
method getAmount (line 46) | @Override
method getDescription (line 51) | @Override
method getCurrency (line 56) | @Override
method getTransactionDate (line 61) | @Override
method isPending (line 66) | @Override
FILE: bankdroid-interface/src/main/java/com/liato/bankdroid/api/service/ServiceLoader.java
type ServiceLoader (line 11) | public interface ServiceLoader {
method load (line 17) | Set<ProviderFactory> load();
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/Helpers.java
class Helpers (line 38) | public class Helpers {
method parseBalance (line 90) | public static BigDecimal parseBalance(String balance) {
method formatBalance (line 112) | public static CharSequence formatBalance(BigDecimal balance, String cu...
method formatBalance (line 135) | public static CharSequence formatBalance(BigDecimal balance, String cu...
method setActivityAnimation (line 139) | static public void setActivityAnimation(Activity activity, int in, int...
method parseCurrency (line 149) | public static String parseCurrency(String text, String def) {
method renderForm (line 164) | public static String renderForm(String action, List<NameValuePair> pos...
method getTransactionDate (line 192) | public static String getTransactionDate(String month, String day) {
method getTransactionDate (line 206) | public static String getTransactionDate(int month, int day) {
method removeHtml (line 225) | public static String removeHtml(String text) {
method formatDate (line 229) | public static String formatDate(Date date) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Account.java
class Account (line 26) | public class Account implements IAccountTypes {
method Account (line 50) | public Account(final String name, final BigDecimal balance,
method Account (line 61) | public Account(final String name, final BigDecimal balance,
method Account (line 66) | public Account(final String name, final BigDecimal balance,
method Account (line 71) | public Account(final String name, final BigDecimal balance, final Stri...
method Account (line 75) | public Account(final String name, final BigDecimal balance,
method Account (line 80) | public Account(final String name, final BigDecimal balance,
method getTransactions (line 85) | public List<Transaction> getTransactions() {
method setTransactions (line 89) | public void setTransactions(final List<Transaction> transactions) {
method isNotify (line 93) | public boolean isNotify() {
method setNotify (line 97) | public void setNotify(final boolean notify) {
method getBalance (line 101) | public BigDecimal getBalance() {
method setBalance (line 105) | public void setBalance(final BigDecimal balance) {
method getName (line 109) | public String getName() {
method setName (line 113) | public void setName(final String name) {
method getId (line 117) | public String getId() {
method setId (line 121) | public void setId(String id) {
method getBank (line 125) | @Nullable
method setBank (line 130) | public void setBank(final Bank bank) {
method getBankDbId (line 134) | public long getBankDbId() {
method getType (line 138) | public int getType() {
method setType (line 142) | public void setType(final int type) {
method isHidden (line 146) | public boolean isHidden() {
method setHidden (line 150) | public void setHidden(final boolean hidden) {
method getCurrency (line 154) | public String getCurrency() {
method setCurrency (line 158) | public void setCurrency(final String currency) {
method getAliasfor (line 162) | public String getAliasfor() {
method setAliasfor (line 166) | public void setAliasfor(final String aliasfor) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Bank.java
class Bank (line 50) | public abstract class Bank implements Comparable<Bank>, IBankTypes {
method Bank (line 128) | public Bank(Context context, @DrawableRes int logoResource) {
method toggleHideAccounts (line 134) | public boolean toggleHideAccounts() {
method getHideAccounts (line 139) | public boolean getHideAccounts() {
method getUrlopen (line 143) | public Urllib getUrlopen() {
method setUrlopen (line 147) | public void setUrlopen(Urllib urlopen) {
method setDbid (line 151) | public void setDbid(long dbid) {
method update (line 155) | public void update(String username, String password) throws BankExcept...
method update (line 162) | public void update() throws BankException, LoginException, BankChoiceE...
method updateTransactions (line 171) | public void updateTransactions(Account account, Urllib urlopen) throws...
method updateAllTransactions (line 175) | public void updateAllTransactions() throws LoginException, BankExcepti...
method login (line 184) | public Urllib login() throws LoginException, BankException, IOException {
method closeConnection (line 188) | public void closeConnection() {
method getAccounts (line 194) | public ArrayList<Account> getAccounts() {
method setAccounts (line 198) | public void setAccounts(ArrayList<Account> accounts) {
method getPassword (line 205) | public String getPassword() {
method setPassword (line 210) | public void setPassword(String password) {
method getUsername (line 214) | public String getUsername() {
method setUsername (line 219) | public void setUsername(String username) {
method getBalance (line 223) | public BigDecimal getBalance() {
method getBanktypeId (line 241) | public abstract int getBanktypeId();
method getName (line 243) | public abstract String getName();
method getDisplayName (line 245) | public String getDisplayName() {
method getCustomName (line 252) | public String getCustomName() {
method setCustomName (line 256) | public void setCustomName(String customName) {
method getExtras (line 260) | public String getExtras() {
method setExtras (line 265) | public void setExtras(String extras) {
method setData (line 269) | public void setData(BigDecimal balance,
method getCurrency (line 280) | public String getCurrency() {
method setCurrency (line 284) | public void setCurrency(String currency) {
method getDbId (line 288) | public long getDbId() {
method isDisabled (line 292) | public boolean isDisabled() {
method setDisabled (line 296) | public void setDisabled(boolean disabled) {
method getURL (line 300) | public String getURL() {
method getInputTypeUsername (line 304) | public int getInputTypeUsername() {
method getInputTypePassword (line 308) | public int getInputTypePassword() {
method getInputTypeExtras (line 312) | public int getInputTypeExtras() {
method getInputHintUsername (line 316) | public String getInputHintUsername() {
method isInputUsernameHidden (line 320) | public boolean isInputUsernameHidden() {
method isInputPasswordHidden (line 324) | public boolean isInputPasswordHidden() {
method isInputExtrasHidden (line 328) | public boolean isInputExtrasHidden() {
method getInputTitleUsername (line 332) | public int getInputTitleUsername() {
method getInputTitlePassword (line 336) | public int getInputTitlePassword() {
method getInputTitleExtras (line 340) | public int getInputTitleExtras() {
method isWebViewEnabled (line 351) | public boolean isWebViewEnabled() {
method getProperties (line 355) | public Map<String, String> getProperties() {
method getProperty (line 362) | public String getProperty(String name) {
method setProperties (line 366) | public void setProperties(Map<String, String> properties) {
method isBroken (line 371) | public boolean isBroken() {
method getImageResource (line 375) | @DrawableRes
method compareTo (line 380) | public int compareTo(Bank another) {
method getConnectionConfiguration (line 384) | public List<Field> getConnectionConfiguration() {
method updateComplete (line 388) | public void updateComplete() {
method getSessionPackage (line 403) | public SessionPackage getSessionPackage(Context context) {
method preLogin (line 449) | protected LoginPackage preLogin() throws BankException, IOException {
method getDisplayDecimals (line 453) | public boolean getDisplayDecimals() {
method getContext (line 457) | protected Context getContext() {
method getDecimalFormatter (line 461) | public DecimalFormat getDecimalFormatter() {
class SessionPackage (line 465) | public static class SessionPackage {
method SessionPackage (line 471) | public SessionPackage(String html, CookieStore cookiestore) {
method getHtml (line 476) | public String getHtml() {
method getCookiestore (line 480) | public CookieStore getCookiestore() {
class LoginPackage (line 485) | public static class LoginPackage {
method LoginPackage (line 497) | public LoginPackage(Urllib urllib, List<NameValuePair> postData, Str...
method setIsLoggedIn (line 505) | public void setIsLoggedIn(boolean loggedIn) {
method getResponse (line 509) | public String getResponse() {
method getUrllib (line 513) | public Urllib getUrllib() {
method getPostData (line 517) | public List<NameValuePair> getPostData() {
method getLoginTarget (line 521) | public String getLoginTarget() {
method isLoggedIn (line 525) | public boolean isLoggedIn() {
method equals (line 530) | @Override
method hashCode (line 542) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/BankChoice.java
class BankChoice (line 19) | public class BankChoice {
method BankChoice (line 25) | public BankChoice(String name, String id) {
method getName (line 33) | public String getName() {
method setName (line 40) | public void setName(String name) {
method getId (line 47) | public String getId() {
method setId (line 54) | public void setId(String id) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/BasicProviderConfiguration.java
class BasicProviderConfiguration (line 12) | public class BasicProviderConfiguration implements ProviderConfiguration {
method BasicProviderConfiguration (line 21) | public BasicProviderConfiguration() {
method getConnectionConfiguration (line 25) | @Override
method createConfiguration (line 30) | private List<Field> createConfiguration() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyBankFactory.java
class LegacyBankFactory (line 54) | public class LegacyBankFactory {
method fromBanktypeId (line 56) | public static Bank fromBanktypeId(int id, Context context) throws Bank...
method listBanks (line 145) | public static List<Bank> listBanks(Context context) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyBankHelper.java
class LegacyBankHelper (line 11) | public class LegacyBankHelper {
method getReferenceFromLegacyId (line 16) | public static String getReferenceFromLegacyId(int legacyId) {
method getLegacyIdFromReference (line 24) | public static int getLegacyIdFromReference(String reference) {
method generateLegacyProviderReferences (line 31) | private static void generateLegacyProviderReferences() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyProviderConfiguration.java
class LegacyProviderConfiguration (line 10) | public class LegacyProviderConfiguration implements ProviderConfiguration {
method LegacyProviderConfiguration (line 22) | public LegacyProviderConfiguration(Bank legacyBank) {
method getConnectionConfiguration (line 26) | @Override
method createConfiguration (line 34) | private List<Field> createConfiguration() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Transaction.java
class Transaction (line 21) | public class Transaction implements Comparable<Transaction> {
method Transaction (line 31) | public Transaction(String date, String transaction, BigDecimal amount,...
method Transaction (line 38) | public Transaction(String date, String transaction, BigDecimal amount) {
method getDate (line 42) | public String getDate() {
method setDate (line 46) | public void setDate(String date) {
method getTransaction (line 50) | public String getTransaction() {
method setTransaction (line 54) | public void setTransaction(String transaction) {
method getAmount (line 58) | public BigDecimal getAmount() {
method setAmount (line 62) | public void setAmount(BigDecimal amount) {
method getCurrency (line 66) | public String getCurrency() {
method setCurrency (line 70) | public void setCurrency(String currency) {
method compareTo (line 74) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AbsIkanoPartner.java
class AbsIkanoPartner (line 47) | public abstract class AbsIkanoPartner extends Bank {
method AbsIkanoPartner (line 59) | public AbsIkanoPartner(Context context, @DrawableRes int logoResource) {
method AbsIkanoPartner (line 67) | public AbsIkanoPartner(String username, String password, Context conte...
method preLogin (line 74) | @Override
method login (line 113) | @Override
method update (line 126) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AkeliusInvest.java
class AkeliusInvest (line 45) | public class AkeliusInvest extends Bank {
method AkeliusInvest (line 79) | public AkeliusInvest(Context context) {
method AkeliusInvest (line 88) | public AkeliusInvest(String username, String password, Context context...
method preLogin (line 95) | @Override
method login (line 119) | public Urllib login() throws LoginException, BankException, IOException {
method getBanktypeId (line 135) | @Override
method getName (line 140) | @Override
method update (line 145) | @Override
method updateTransactions (line 192) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AkeliusSpar.java
class AkeliusSpar (line 46) | public class AkeliusSpar extends Bank {
method AkeliusSpar (line 80) | public AkeliusSpar(Context context) {
method getBanktypeId (line 89) | @Override
method getName (line 94) | @Override
method AkeliusSpar (line 99) | public AkeliusSpar(String username, String password, Context context) ...
method preLogin (line 106) | @Override
method login (line 130) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 147) | @Override
method updateTransactions (line 194) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AppeakPoker.java
class AppeakPoker (line 41) | public class AppeakPoker extends Bank {
method AppeakPoker (line 55) | public AppeakPoker(Context context) {
method getBanktypeId (line 64) | @Override
method getName (line 69) | @Override
method AppeakPoker (line 74) | public AppeakPoker(String username, String password, Context context) ...
method preLogin (line 80) | @Override
method login (line 88) | @Override
method update (line 102) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BetterGlobe.java
class BetterGlobe (line 43) | public class BetterGlobe extends Bank {
method BetterGlobe (line 69) | public BetterGlobe(Context context) {
method getBanktypeId (line 79) | @Override
method getName (line 84) | @Override
method BetterGlobe (line 89) | public BetterGlobe(String username, String password, Context context) ...
method preLogin (line 96) | @Override
method login (line 110) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 117) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Bioklubben.java
class Bioklubben (line 45) | public class Bioklubben extends Bank {
method Bioklubben (line 57) | public Bioklubben(Context context) {
method getBanktypeId (line 67) | @Override
method getName (line 72) | @Override
method Bioklubben (line 77) | public Bioklubben(String username, String password, Context context) t...
method preLogin (line 83) | @Override
method login (line 121) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 130) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BlekingeTrafiken.java
class BlekingeTrafiken (line 41) | public class BlekingeTrafiken extends Bank {
method BlekingeTrafiken (line 51) | public BlekingeTrafiken(Context context) {
method getBanktypeId (line 60) | @Override
method getName (line 65) | @Override
method BlekingeTrafiken (line 70) | public BlekingeTrafiken(String username, String password, Context cont...
method preLogin (line 76) | @Override
method login (line 85) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 98) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Bredband2VoIP.java
class Bredband2VoIP (line 45) | public class Bredband2VoIP extends Bank {
method Bredband2VoIP (line 64) | public Bredband2VoIP(Context context) {
method getBanktypeId (line 70) | @Override
method getName (line 75) | @Override
method Bredband2VoIP (line 80) | public Bredband2VoIP(String username, String password, Context context)
method preLogin (line 86) | @Override
method login (line 103) | @Override
method update (line 112) | @Override
method updateTransactions (line 136) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BrummerKF.java
class BrummerKF (line 45) | public class BrummerKF extends Bank {
method BrummerKF (line 77) | public BrummerKF(Context context) {
method getBanktypeId (line 86) | @Override
method getName (line 91) | @Override
method BrummerKF (line 96) | public BrummerKF(String username, String password, Context context) th...
method preLogin (line 103) | @Override
method login (line 137) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 153) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/CSN.java
class CSN (line 48) | public class CSN extends Bank {
method CSN (line 81) | public CSN(Context context) {
method getBanktypeId (line 90) | @Override
method getName (line 95) | @Override
method CSN (line 100) | public CSN(String username, String password, Context context) throws B...
method preLogin (line 107) | @Override
method login (line 128) | @Override
method update (line 142) | @Override
method updateTransactions (line 184) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Chalmrest.java
class Chalmrest (line 27) | public class Chalmrest extends Bank {
method Chalmrest (line 46) | public Chalmrest(Context context) {
method getBanktypeId (line 54) | @Override
method getName (line 59) | @Override
method Chalmrest (line 64) | public Chalmrest(String username, String password, Context context) th...
method preLogin (line 70) | @Override
method login (line 100) | @Override
method update (line 110) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/DanskeBank.java
class DanskeBank (line 48) | public class DanskeBank extends Bank {
method DanskeBank (line 81) | public DanskeBank(Context context) {
method getBanktypeId (line 89) | @Override
method getName (line 94) | @Override
method DanskeBank (line 99) | public DanskeBank(String username, String password, Context context) t...
method preLogin (line 105) | @Override
method login (line 140) | @Override
method update (line 150) | @Override
method updateTransactions (line 206) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Everydaycard.java
class Everydaycard (line 44) | public class Everydaycard extends Bank {
method Everydaycard (line 66) | public Everydaycard(Context context) {
method getBanktypeId (line 73) | @Override
method getName (line 78) | @Override
method Everydaycard (line 83) | public Everydaycard(String username, String password, Context context)
method preLogin (line 89) | @Override
method preLoginInternal (line 94) | private LoginPackage preLoginInternal(String url) throws BankException...
method login (line 103) | @Override
method update (line 113) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/FirstCard.java
class FirstCard (line 45) | public class FirstCard extends Bank {
method FirstCard (line 67) | public FirstCard(Context context) {
method getBanktypeId (line 74) | @Override
method getName (line 79) | @Override
method FirstCard (line 84) | public FirstCard(String username, String password, Context context) th...
method preLogin (line 91) | @Override
method login (line 104) | @Override
method update (line 114) | @Override
method updateTransactions (line 145) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Hemkop.java
class Hemkop (line 49) | public class Hemkop extends Bank {
method Hemkop (line 63) | public Hemkop(Context context) {
method getBanktypeId (line 71) | @Override
method getName (line 76) | @Override
method Hemkop (line 81) | public Hemkop(String username, String password, Context context) throw...
method preLogin (line 88) | @Override
method login (line 124) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 134) | @Override
method updateTransactions (line 193) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Hors.java
class Hors (line 44) | public class Hors extends Bank {
method Hors (line 56) | public Hors(Context context) {
method getBanktypeId (line 67) | @Override
method getName (line 72) | @Override
method Hors (line 77) | public Hors(String username, String password, Context context) throws ...
method preLogin (line 83) | @Override
method login (line 117) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 126) | @Override
method asTransaction (line 159) | private Transaction asTransaction(Element element) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/IKEA.java
class IKEA (line 29) | public class IKEA extends AbsIkanoPartner {
method IKEA (line 38) | public IKEA(Context context) {
method getBanktypeId (line 45) | @Override
method getName (line 50) | @Override
method IKEA (line 55) | public IKEA(String username, String password, Context context) throws ...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/IkanoBank.java
class IkanoBank (line 46) | public class IkanoBank extends Bank {
method IkanoBank (line 79) | public IkanoBank(Context context) {
method getBanktypeId (line 88) | @Override
method getName (line 93) | @Override
method IkanoBank (line 98) | public IkanoBank(String username, String password, Context context) th...
method preLogin (line 105) | @Override
method login (line 142) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 160) | @Override
method updateTransactions (line 190) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Jojo.java
class Jojo (line 47) | public class Jojo extends Bank {
method Jojo (line 62) | public Jojo(Context context) {
method getBanktypeId (line 70) | @Override
method getName (line 75) | @Override
method Jojo (line 80) | public Jojo(String username, String password, Context context) throws ...
method preLogin (line 86) | @Override
method login (line 98) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 108) | @Override
method toAccount (line 130) | private Account toAccount(Element card) {
method getBalance (line 138) | private BigDecimal getBalance(String cardNumber) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/McDonalds.java
class McDonalds (line 44) | public class McDonalds extends Bank {
method McDonalds (line 65) | public McDonalds(Context context) {
method getBanktypeId (line 74) | @Override
method getName (line 79) | @Override
method McDonalds (line 84) | public McDonalds(String username, String password, Context context) th...
method preLogin (line 90) | @Override
method login (line 102) | @Override
method update (line 112) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Meniga.java
class Meniga (line 31) | public class Meniga extends Bank {
method Meniga (line 51) | public Meniga(Context context) {
method getBanktypeId (line 60) | @Override
method getName (line 65) | @Override
method Meniga (line 70) | public Meniga(String username, String password, Context context) throw...
method preLogin (line 76) | @Override
method login (line 88) | @Override
method update (line 101) | @Override
method updateTransactions (line 136) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/MinPension.java
class MinPension (line 47) | public class MinPension extends Bank {
method MinPension (line 49) | public MinPension(Context context) {
method getBanktypeId (line 56) | @Override
method getName (line 61) | @Override
method MinPension (line 66) | public MinPension(String username, String password, Context context)
method preLogin (line 72) | @Override
method login (line 92) | @Override
method update (line 114) | @Override
method updateAccount (line 137) | private Account updateAccount(String url, String selector, String name...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Nordnet.java
class Nordnet (line 47) | public class Nordnet extends Bank {
method Nordnet (line 64) | public Nordnet(Context context) {
method getBanktypeId (line 70) | @Override
method getName (line 75) | @Override
method Nordnet (line 80) | public Nordnet(String username, String password, Context context) thro...
method preLogin (line 87) | @Override
method login (line 119) | @Override
method update (line 129) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/OKQ8.java
class OKQ8 (line 46) | public class OKQ8 extends Bank {
method OKQ8 (line 74) | public OKQ8(Context context) {
method getBanktypeId (line 83) | @Override
method getName (line 88) | @Override
method OKQ8 (line 93) | public OKQ8(String username, String password, Context context) throws ...
method preLogin (line 100) | @Override
method login (line 125) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 179) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Ostgotatrafiken.java
class Ostgotatrafiken (line 42) | public class Ostgotatrafiken extends Bank {
method Ostgotatrafiken (line 67) | public Ostgotatrafiken(Context context) {
method getBanktypeId (line 71) | @Override
method getName (line 76) | @Override
method Ostgotatrafiken (line 81) | public Ostgotatrafiken(String username, String password, Context conte...
method preLogin (line 87) | @Override
method login (line 102) | @Override
method update (line 112) | @Override
method parseTravelCardBalanceFromServerResponse (line 182) | private void parseTravelCardBalanceFromServerResponse(String response) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Osuuspankki.java
class Osuuspankki (line 44) | public class Osuuspankki extends Bank {
method Osuuspankki (line 61) | public Osuuspankki(Context context) {
method getBanktypeId (line 66) | @Override
method getName (line 71) | @Override
method Osuuspankki (line 76) | public Osuuspankki(String username, String password, Context context) ...
method preLogin (line 82) | @Override
method login (line 98) | @Override
method update (line 109) | @Override
method updateTransactions (line 150) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Payson.java
class Payson (line 45) | public class Payson extends Bank {
method Payson (line 64) | public Payson(Context context) {
method getBanktypeId (line 71) | @Override
method getName (line 76) | @Override
method Payson (line 81) | public Payson(String username, String password, Context context) throw...
method preLogin (line 87) | @Override
method login (line 108) | @Override
method update (line 121) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/PlusGirot.java
class PlusGirot (line 44) | public class PlusGirot extends Bank {
method PlusGirot (line 62) | public PlusGirot(Context context) {
method getBanktypeId (line 67) | @Override
method getName (line 72) | @Override
method PlusGirot (line 77) | public PlusGirot(String username, String password, Context context) th...
method preLogin (line 84) | @Override
method login (line 98) | @Override
method update (line 108) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SevenDay.java
class SevenDay (line 44) | public class SevenDay extends Bank {
method SevenDay (line 65) | public SevenDay(Context context) {
method getBanktypeId (line 73) | @Override
method getName (line 78) | @Override
method SevenDay (line 83) | public SevenDay(String username, String password, Context context) thr...
method preLogin (line 90) | @Override
method login (line 114) | @Override
method update (line 125) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SveaDirekt.java
class SveaDirekt (line 31) | public class SveaDirekt extends Bank {
method SveaDirekt (line 59) | public SveaDirekt(Context context) {
method getBanktypeId (line 68) | @Override
method getName (line 73) | @Override
method SveaDirekt (line 78) | public SveaDirekt(String username, String password, Context context) t...
method preLogin (line 84) | @Override
method login (line 108) | @Override
method update (line 119) | @Override
method parseAccounts (line 140) | private ArrayList<Account> parseAccounts(Document pDocument) {
method parseTransactions (line 153) | private List<Transaction> parseTransactions(String pResponse) {
method amountOf (line 172) | private BigDecimal amountOf(String amount) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SvenskaSpel.java
class SvenskaSpel (line 44) | public class SvenskaSpel extends Bank {
method SvenskaSpel (line 60) | public SvenskaSpel(Context context) {
method getBanktypeId (line 68) | @Override
method getName (line 73) | @Override
method SvenskaSpel (line 78) | public SvenskaSpel(String username, String password, Context context) ...
method preLogin (line 84) | @Override
method login (line 93) | @Override
method update (line 108) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/TestBank.java
class TestBank (line 42) | public class TestBank extends Bank {
method TestBank (line 68) | public TestBank(Context context) {
method getBanktypeId (line 77) | @Override
method getName (line 82) | @Override
method TestBank (line 87) | public TestBank(String username, String password, Context context) thr...
method login (line 93) | @Override
method addVolatileAccount (line 106) | private void addVolatileAccount() {
method update (line 123) | @Override
method updateTransactions (line 161) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/TicketRikskortet.java
class TicketRikskortet (line 43) | public class TicketRikskortet extends Bank {
method TicketRikskortet (line 69) | public TicketRikskortet(Context context) {
method getBanktypeId (line 75) | @Override
method getName (line 80) | @Override
method TicketRikskortet (line 85) | public TicketRikskortet(String username, String password, Context cont...
method preLogin (line 92) | @Override
method login (line 129) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 138) | @Override
method updateTransactions (line 167) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Vasttrafik.java
class Vasttrafik (line 43) | public class Vasttrafik extends Bank {
method Vasttrafik (line 63) | public Vasttrafik(Context context) {
method getBanktypeId (line 68) | @Override
method getName (line 73) | @Override
method Vasttrafik (line 78) | public Vasttrafik(String username, String password, Context context) t...
method preLogin (line 84) | @Override
method login (line 116) | @Override
method update (line 126) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Zidisha.java
class Zidisha (line 43) | public class Zidisha extends Bank {
method Zidisha (line 68) | public Zidisha(Context context) {
method getBanktypeId (line 79) | @Override
method getName (line 84) | @Override
method Zidisha (line 89) | public Zidisha(String username, String password, Context context) thro...
method preLogin (line 96) | @Override
method login (line 118) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 124) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/AmericanExpress.java
class AmericanExpress (line 53) | public class AmericanExpress extends Bank {
method AmericanExpress (line 64) | public AmericanExpress(Context context) {
method getBanktypeId (line 69) | @Override
method getName (line 74) | @Override
method AmericanExpress (line 79) | public AmericanExpress(String username, String password, Context conte...
method preLogin (line 85) | @Override
method login (line 96) | @Override
method update (line 112) | @Override
method fetchTransactionsFor (line 134) | private List<Transaction> fetchTransactionsFor(Card card) throws IOExc...
method transactionsOf (line 162) | private List<Transaction> transactionsOf(@Nullable TransactionDetails ...
method asTransaction (line 172) | private Transaction asTransaction(com.liato.bankdroid.banking.banks.am...
method asAccount (line 183) | private Account asAccount(Card card) {
method objectAsJson (line 192) | private String objectAsJson(Object value) throws BankException {
method parseLoginResponse (line 200) | private LoginResponse parseLoginResponse(HttpResponse response) throws...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/AccountActivity.java
class AccountActivity (line 8) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTransactionList (line 12) | public List<Transaction> getTransactionList() {
method setTransactionList (line 17) | public void setTransactionList(List<Transaction> transactionList) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Amount.java
class Amount (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getRawValue (line 7) | public double getRawValue() {
method setRawValue (line 11) | public void setRawValue(double rawValue) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Capabilities.java
class Capabilities (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTransactions (line 10) | public TransactionCapabilities getTransactions() {
method setTransactions (line 14) | public void setTransactions(TransactionCapabilities transactions) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Card.java
class Card (line 8) | @JsonIgnoreProperties(ignoreUnknown = true)
method getCardProductName (line 18) | public String getCardProductName() {
method setCardProductName (line 22) | public void setCardProductName(String cardProductName) {
method getCardKey (line 26) | public String getCardKey() {
method setCardKey (line 30) | public void setCardKey(String cardKey) {
method getCardNumberDisplay (line 34) | public String getCardNumberDisplay() {
method setCardNumberDisplay (line 38) | public void setCardNumberDisplay(String cardNumberDisplay) {
method getSummary (line 42) | public Summary getSummary() {
method setSummary (line 46) | public void setSummary(Summary summary) {
method getCapabilities (line 50) | public Capabilities getCapabilities() {
method setCapabilities (line 54) | public void setCapabilities(Capabilities capabilities) {
method getSortedIndex (line 58) | public int getSortedIndex() {
method setSortedIndex (line 62) | public void setSortedIndex(int sortedIndex) {
method isTransactionsEnabled (line 66) | public boolean isTransactionsEnabled() {
method getBalance (line 72) | public BigDecimal getBalance() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Date.java
class Date (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getRawValue (line 9) | public long getRawValue() {
method setRawValue (line 13) | public void setRawValue(long rawValue) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/LoginRequest.java
class LoginRequest (line 5) | public class LoginRequest {
method LoginRequest (line 11) | public LoginRequest(String username, String password) {
method getUser (line 17) | public String getUser() {
method getPassword (line 21) | public String getPassword() {
method getUserTimeStampInMilli (line 25) | public long getUserTimeStampInMilli() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/LoginResponse.java
class LoginResponse (line 11) | @JsonIgnoreProperties(ignoreUnknown = true)
method getSummaryData (line 19) | public SummaryData getSummaryData() {
method setSummaryData (line 23) | public void setSummaryData(SummaryData summaryData) {
method getStatus (line 29) | public int getStatus() {
method setStatus (line 33) | public void setStatus(int status) {
method getLogonData (line 37) | public LogonData getLogonData() {
method setLogonData (line 41) | public void setLogonData(LogonData logonData) {
method getCards (line 45) | public List<Card> getCards() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/LogonData.java
class LogonData (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getStatus (line 12) | public int getStatus() {
method setStatus (line 16) | public void setStatus(int status) {
method getMessage (line 20) | public String getMessage() {
method setMessage (line 24) | public void setMessage(String message) {
method getCupcake (line 28) | public String getCupcake() {
method setCupcake (line 32) | public void setCupcake(String cupcake) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Summary.java
class Summary (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTotalBalance (line 9) | public TotalBalance getTotalBalance() {
method setTotalBalance (line 13) | public void setTotalBalance(TotalBalance totalBalance) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/SummaryData.java
class SummaryData (line 7) | @JsonIgnoreProperties(ignoreUnknown = true)
method getStatus (line 13) | public int getStatus() {
method setStatus (line 17) | public void setStatus(int status) {
method getCardList (line 21) | public List<Card> getCardList() {
method setCardList (line 25) | public void setCardList(List<Card> cardList) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/TotalBalance.java
class TotalBalance (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getValue (line 9) | public String getValue() {
method setValue (line 13) | public void setValue(String value) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/Transaction.java
class Transaction (line 7) | @JsonIgnoreProperties(ignoreUnknown = true)
method getAmount (line 13) | public Amount getAmount() {
method setAmount (line 17) | public void setAmount(Amount amount) {
method getChargeDate (line 21) | public Date getChargeDate() {
method setChargeDate (line 25) | public void setChargeDate(Date chargeDate) {
method getDescription (line 29) | public List<String> getDescription() {
method setDescription (line 33) | public void setDescription(List<String> description) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/TransactionCapabilities.java
class TransactionCapabilities (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method isEnabled (line 9) | public boolean isEnabled() {
method setEnabled (line 13) | public void setEnabled(boolean enabled) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/TransactionDetails.java
class TransactionDetails (line 9) | @JsonIgnoreProperties(ignoreUnknown = true)
method getStatus (line 16) | public long getStatus() {
method setStatus (line 20) | public void setStatus(long status) {
method getActivityList (line 24) | public List<AccountActivity> getActivityList() {
method setActivityList (line 28) | public void setActivityList(List<AccountActivity> activityList) {
method getMessage (line 32) | public String getMessage() {
method setMessage (line 36) | public void setMessage(String message) {
method getTransactions (line 40) | public List<Transaction> getTransactions() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/model/TransactionsResponse.java
class TransactionsResponse (line 5) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTransactionDetails (line 10) | public TransactionDetails getTransactionDetails() {
method setTransactionDetails (line 14) | public void setTransactionDetails(TransactionDetails transactionDetail...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/Bitcoin.java
class Bitcoin (line 39) | public class Bitcoin extends Bank {
method Bitcoin (line 57) | public Bitcoin(Context context) {
method getBanktypeId (line 67) | @Override
method getName (line 72) | @Override
method Bitcoin (line 77) | public Bitcoin(String username, String password, Context context)
method login (line 83) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 110) | @Override
method getDecimalFormatter (line 125) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/model/BlockchainResponse.java
class BlockchainResponse (line 9) | public class BlockchainResponse implements Serializable {
method getTotalSent (line 34) | @JsonProperty("total_sent")
method getTotalReceived (line 39) | @JsonProperty("total_received")
method getFinalBalance (line 44) | @JsonProperty("final_balance")
method getAddress (line 49) | @JsonProperty("address")
method getHash160 (line 54) | @JsonProperty("hash160")
method getTxs (line 59) | @JsonProperty("txs")
method getNTx (line 64) | @JsonProperty("n_tx")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/model/Input.java
class Input (line 7) | public class Input implements Serializable {
method getPrevOut (line 14) | @JsonProperty("prev_out")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/model/Out.java
class Out (line 7) | public class Out implements Serializable {
method getTxIndex (line 26) | @JsonProperty("tx_index")
method getType (line 31) | @JsonProperty("type")
method getAddr (line 36) | @JsonProperty("addr")
method getValue (line 41) | @JsonProperty("value")
method getN (line 46) | @JsonProperty("n")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/model/PrevOut.java
class PrevOut (line 7) | public class PrevOut implements Serializable {
method getTxIndex (line 26) | @JsonProperty("tx_index")
method getType (line 31) | @JsonProperty("type")
method getAddr (line 36) | @JsonProperty("addr")
method getValue (line 41) | @JsonProperty("value")
method getN (line 46) | @JsonProperty("n")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/bitcoin/model/Transfer.java
class Transfer (line 9) | public class Transfer implements Serializable {
method getSize (line 53) | @JsonProperty("size")
method getInputs (line 58) | @JsonProperty("inputs")
method getHash (line 63) | @JsonProperty("hash")
method getTxIndex (line 68) | @JsonProperty("tx_index")
method getRelayedBy (line 73) | @JsonProperty("relayed_by")
method getBlockHeight (line 78) | @JsonProperty("block_height")
method getVinSz (line 83) | @JsonProperty("vin_sz")
method getVoutSz (line 88) | @JsonProperty("vout_sz")
method getTime (line 93) | @JsonProperty("time")
method getVer (line 98) | @JsonProperty("ver")
method getOut (line 103) | @JsonProperty("out")
method getResult (line 108) | @JsonProperty("result")
method getNote (line 113) | @JsonProperty("note")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/coop/Coop.java
class Coop (line 56) | public class Coop extends Bank {
method Coop (line 81) | public Coop(Context context) {
method getBanktypeId (line 88) | @Override
method getName (line 93) | @Override
method Coop (line 98) | public Coop(String username, String password, Context context) throws ...
method preLogin (line 104) | @Override
method login (line 129) | @Override
method update (line 138) | @Override
method getObjectmapper (line 241) | private ObjectMapper getObjectmapper() {
method updateTransactions (line 250) | @Override
method formatDate (line 284) | private String formatDate(String date) {
method isFirstAccountForType (line 294) | private boolean isFirstAccountForType(String accountId) {
method getAccuntType (line 303) | private AccountType getAccuntType(String accountId) {
type AccountType (line 312) | enum AccountType {
method AccountType (line 326) | private AccountType(String prefix, String url) {
method getPrefix (line 331) | public String getPrefix() {
method getUrl (line 335) | public String getUrl() {
class TransactionParams (line 340) | class TransactionParams {
method getPageGuid (line 348) | public String getPageGuid() {
method setPageGuid (line 352) | public void setPageGuid(String pageGuid) {
method getMinDate (line 356) | public String getMinDate() {
method setMinDate (line 360) | public void setMinDate(String minDate) {
method getMaxDate (line 364) | public String getMaxDate() {
method setMaxDate (line 368) | public void setMaxDate(String maxDate) {
method isValid (line 372) | public boolean isValid() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/coop/model/web/D.java
class D (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTemplate (line 15) | @JsonProperty("template")
method setTemplate (line 20) | @JsonProperty("template")
method getModel (line 25) | @JsonProperty("model")
method setModel (line 30) | @JsonProperty("model")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/coop/model/web/Model.java
class Model (line 9) | @JsonIgnoreProperties(ignoreUnknown = true)
method getResults (line 33) | @JsonProperty("results")
method setResults (line 38) | @JsonProperty("results")
method getFrom (line 43) | @JsonProperty("from")
method setFrom (line 48) | @JsonProperty("from")
method getTo (line 53) | @JsonProperty("to")
method setTo (line 58) | @JsonProperty("to")
method getId (line 63) | @JsonProperty("id")
method setId (line 68) | @JsonProperty("id")
method getPage (line 73) | @JsonProperty("page")
method setPage (line 78) | @JsonProperty("page")
method getPageCount (line 83) | @JsonProperty("pageCount")
method setPageCount (line 88) | @JsonProperty("pageCount")
method getPageSize (line 93) | @JsonProperty("pageSize")
method setPageSize (line 98) | @JsonProperty("pageSize")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/coop/model/web/Result.java
class Result (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getDate (line 42) | @JsonProperty("date")
method setDate (line 47) | @JsonProperty("date")
method getIcon (line 52) | @JsonProperty("icon")
method setIcon (line 57) | @JsonProperty("icon")
method getTitle (line 62) | @JsonProperty("title")
method setTitle (line 67) | @JsonProperty("title")
method getCardholder (line 72) | @JsonProperty("cardholder")
method setCardholder (line 77) | @JsonProperty("cardholder")
method getLocation (line 82) | @JsonProperty("location")
method setLocation (line 87) | @JsonProperty("location")
method getSum (line 92) | @JsonProperty("sum")
method setSum (line 97) | @JsonProperty("sum")
method getCharity (line 102) | @JsonProperty("charity")
method setCharity (line 107) | @JsonProperty("charity")
method getHasdetails (line 112) | @JsonProperty("hasdetails")
method setHasdetails (line 117) | @JsonProperty("hasdetails")
method getDetailsurl (line 122) | @JsonProperty("detailsurl")
method setDetailsurl (line 127) | @JsonProperty("detailsurl")
method getBatchnumber (line 132) | @JsonProperty("batchnumber")
method setBatchnumber (line 137) | @JsonProperty("batchnumber")
method getSequencenumber (line 142) | @JsonProperty("sequencenumber")
method setSequencenumber (line 147) | @JsonProperty("sequencenumber")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/coop/model/web/WebTransactionHistoryResponse.java
class WebTransactionHistoryResponse (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getD (line 12) | @JsonProperty("d")
method setD (line 17) | @JsonProperty("d")
method getModel (line 22) | public Model getModel() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/ICA.java
class ICA (line 53) | public class ICA extends Bank {
method ICA (line 67) | public ICA(Context context) {
method getBanktypeId (line 78) | @Override
method getName (line 83) | @Override
method ICA (line 88) | public ICA(String username, String password, Context context)
method login (line 94) | public Urllib login() throws LoginException, BankException, IOException {
method update (line 189) | @Override
method readJsonValue (line 201) | private <T> T readJsonValue(HttpResponse response, Class<T> valueType)...
method readJsonValue (line 209) | private <T> T readJsonValue(InputStream is, Class<T> valueType) throws...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/model/Account.java
class Account (line 9) | @JsonIgnoreProperties(ignoreUnknown = true)
method getName (line 33) | @JsonProperty("Name")
method setName (line 38) | @JsonProperty("Name")
method getAccountNumber (line 43) | @JsonProperty("AccountNumber")
method setAccountNumber (line 48) | @JsonProperty("AccountNumber")
method getAvailableAmount (line 53) | @JsonProperty("AvailableAmount")
method setAvailableAmount (line 58) | @JsonProperty("AvailableAmount")
method getReservedAmount (line 63) | @JsonProperty("ReservedAmount")
method setReservedAmount (line 68) | @JsonProperty("ReservedAmount")
method getSaldo (line 73) | @JsonProperty("Saldo")
method setSaldo (line 78) | @JsonProperty("Saldo")
method getCreditLimit (line 83) | @JsonProperty("CreditLimit")
method setCreditLimit (line 88) | @JsonProperty("CreditLimit")
method getTransactions (line 93) | @JsonProperty("Transactions")
method setTransactions (line 98) | @JsonProperty("Transactions")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/model/LoginError.java
class LoginError (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTitle (line 21) | @JsonProperty("Title")
method setTitle (line 26) | @JsonProperty("Title")
method getMessageCode (line 31) | @JsonProperty("MessageCode")
method setMessageCode (line 36) | @JsonProperty("MessageCode")
method getPhoneNumber (line 41) | @JsonProperty("PhoneNumber")
method setPhoneNumber (line 46) | @JsonProperty("PhoneNumber")
method getMessage (line 51) | @JsonProperty("Message")
method setMessage (line 56) | @JsonProperty("Message")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/model/Overview.java
class Overview (line 9) | @JsonIgnoreProperties(ignoreUnknown = true)
method getSaldo (line 60) | @JsonProperty("Saldo")
method setSaldo (line 65) | @JsonProperty("Saldo")
method getYearlyTotalPurchased (line 70) | @JsonProperty("YearlyTotalPurchased")
method setYearlyTotalPurchased (line 75) | @JsonProperty("YearlyTotalPurchased")
method getPurchaseToDate (line 80) | @JsonProperty("PurchaseToDate")
method setPurchaseToDate (line 85) | @JsonProperty("PurchaseToDate")
method getAcquiredDiscount (line 90) | @JsonProperty("AcquiredDiscount")
method setAcquiredDiscount (line 95) | @JsonProperty("AcquiredDiscount")
method getAmountSinceLastBonusCheck (line 100) | @JsonProperty("AmountSinceLastBonusCheck")
method setAmountSinceLastBonusCheck (line 105) | @JsonProperty("AmountSinceLastBonusCheck")
method getAmountLeftUntilNextBonusCheck (line 110) | @JsonProperty("AmountLeftUntilNextBonusCheck")
method setAmountLeftUntilNextBonusCheck (line 115) | @JsonProperty("AmountLeftUntilNextBonusCheck")
method getNextBonusCheckValue (line 120) | @JsonProperty("NextBonusCheckValue")
method setNextBonusCheckValue (line 125) | @JsonProperty("NextBonusCheckValue")
method getAcquiredBonus (line 130) | @JsonProperty("AcquiredBonus")
method setAcquiredBonus (line 135) | @JsonProperty("AcquiredBonus")
method getBonusToDate (line 140) | @JsonProperty("BonusToDate")
method setBonusToDate (line 145) | @JsonProperty("BonusToDate")
method getIcaBankUrl (line 150) | @JsonProperty("IcaBankUrl")
method setIcaBankUrl (line 155) | @JsonProperty("IcaBankUrl")
method getAccountNumber (line 160) | @JsonProperty("AccountNumber")
method setAccountNumber (line 165) | @JsonProperty("AccountNumber")
method getAccountName (line 170) | @JsonProperty("AccountName")
method setAccountName (line 175) | @JsonProperty("AccountName")
method getAvailableAmount (line 180) | @JsonProperty("AvailableAmount")
method setAvailableAmount (line 185) | @JsonProperty("AvailableAmount")
method getCreditLimit (line 190) | @JsonProperty("CreditLimit")
method setCreditLimit (line 195) | @JsonProperty("CreditLimit")
method getAccounts (line 200) | @JsonProperty("Accounts")
method setAccounts (line 205) | @JsonProperty("Accounts")
method getTransactions (line 210) | @JsonProperty("Transactions")
method setTransactions (line 215) | @JsonProperty("Transactions")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/model/Transaction.java
class Transaction (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getTransactionDate (line 18) | @JsonProperty("TransactionDate")
method setTransactionDate (line 23) | @JsonProperty("TransactionDate")
method getAmount (line 28) | @JsonProperty("Amount")
method setAmount (line 33) | @JsonProperty("Amount")
method getDescription (line 38) | @JsonProperty("Description")
method setDescription (line 43) | @JsonProperty("Description")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/ica/model/User.java
class User (line 6) | @JsonIgnoreProperties(ignoreUnknown = true)
method getFirstName (line 18) | @JsonProperty("FirstName")
method setFirstName (line 23) | @JsonProperty("FirstName")
method getLastName (line 28) | @JsonProperty("LastName")
method setLastName (line 33) | @JsonProperty("LastName")
method getTtl (line 38) | @JsonProperty("Ttl")
method setTtl (line 43) | @JsonProperty("Ttl")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/Lansforsakringar.java
class Lansforsakringar (line 63) | public class Lansforsakringar extends Bank {
method Lansforsakringar (line 81) | public Lansforsakringar(Context context) {
method getBanktypeId (line 92) | @Override
method getName (line 97) | @Override
method login (line 102) | public Urllib login() throws LoginException, BankException, IOException {
method readJsonValue (line 129) | private <T> T readJsonValue(InputStream is, Class<T> valueType) throws...
method readJsonValue (line 143) | private <T> T readJsonValue(String url, String postData, Class<T> valu...
method objectAsJson (line 148) | @Nullable
method generateChallenge (line 158) | private String generateChallenge(int originalChallenge) {
method update (line 177) | @Override
method updateTransactions (line 214) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/request/AccountsRequest.java
class AccountsRequest (line 6) | public class AccountsRequest {
method AccountsRequest (line 10) | public AccountsRequest(Type accountType) {
method getAccountType (line 14) | @JsonProperty("accountType")
method setAccountType (line 19) | @JsonSetter("accountType")
type Type (line 24) | public enum Type {
method Type (line 30) | private Type(String name) {
method toString (line 34) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/request/ChallengeRequest.java
class ChallengeRequest (line 6) | public class ChallengeRequest {
method ChallengeRequest (line 15) | public ChallengeRequest(int originalChallenge, String challengePair, S...
method getOriginalChallenge (line 21) | @JsonProperty("originalChallenge")
method setOriginalChallenge (line 26) | @JsonSetter("originalChallenge")
method getChallengePair (line 31) | @JsonProperty("challengePair")
method setChallengePair (line 36) | @JsonSetter("challengePair")
method getHash (line 41) | @JsonProperty("hash")
method setHash (line 46) | @JsonSetter("hash")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/request/LoginRequest.java
class LoginRequest (line 6) | public class LoginRequest {
method LoginRequest (line 13) | public LoginRequest(String ssn, String pin) {
method getSsn (line 18) | @JsonProperty("ssn")
method setSsn (line 23) | @JsonSetter("ssn")
method getPin (line 28) | @JsonProperty("pin")
method setPin (line 33) | @JsonSetter("pin")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/request/TransactionsRequest.java
class TransactionsRequest (line 6) | public class TransactionsRequest {
method TransactionsRequest (line 15) | public TransactionsRequest(int requestedPage, String ledger, String ac...
method getRequestedPage (line 21) | @JsonProperty("requestedPage")
method setRequestedPage (line 26) | @JsonSetter("requestedPage")
method getLedger (line 31) | @JsonProperty("ledger")
method setLedger (line 36) | @JsonSetter("ledger")
method getAccountNumber (line 41) | @JsonProperty("accountNumber")
method setAccountNumber (line 46) | @JsonSetter("accountNumber")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/request/UpcomingTransactionsRequest.java
class UpcomingTransactionsRequest (line 6) | public class UpcomingTransactionsRequest {
method UpcomingTransactionsRequest (line 11) | public UpcomingTransactionsRequest(String accountNumber) {
method getAccountNumber (line 15) | @JsonProperty("accountNumber")
method setAccountNumber (line 20) | @JsonSetter("accountNumber")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/Account.java
class Account (line 6) | public class Account {
method getTransferTo (line 28) | @JsonProperty("transferTo")
method setTransferTo (line 33) | @JsonSetter("transferTo")
method getProductCode (line 38) | @JsonProperty("productCode")
method setProductCode (line 43) | @JsonSetter("productCode")
method getYouthAccount (line 48) | @JsonProperty("youthAccount")
method setYouthAccount (line 53) | @JsonSetter("youthAccount")
method getAccountNumber (line 58) | @JsonProperty("accountNumber")
method setAccountNumber (line 63) | @JsonSetter("accountNumber")
method getClearingNumber (line 68) | @JsonProperty("clearingNumber")
method setClearingNumber (line 73) | @JsonSetter("clearingNumber")
method getTransferFrom (line 78) | @JsonProperty("transferFrom")
method setTransferFrom (line 83) | @JsonSetter("transferFrom")
method getLedger (line 88) | @JsonProperty("ledger")
method setLedger (line 93) | @JsonSetter("ledger")
method getAccountName (line 98) | @JsonProperty("accountName")
method setAccountName (line 103) | @JsonSetter("accountName")
method getDispoibleAmount (line 108) | @JsonProperty("dispoibleAmount")
method setDispoibleAmount (line 113) | @JsonSetter("dispoibleAmount")
method getBalance (line 118) | @JsonProperty("balance")
method setBalance (line 123) | @JsonSetter("balance")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/AccountsResponse.java
class AccountsResponse (line 8) | public class AccountsResponse {
method getAccounts (line 12) | @JsonProperty("accounts")
method setAccounts (line 17) | @JsonSetter("accounts")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/ChallengeResponse.java
class ChallengeResponse (line 6) | public class ChallengeResponse {
method getLifetime (line 12) | @JsonProperty("lifetime")
method setLifetime (line 17) | @JsonSetter("lifetime")
method getToken (line 22) | @JsonProperty("token")
method setToken (line 27) | @JsonSetter("token")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/LoginResponse.java
class LoginResponse (line 6) | public class LoginResponse {
method getName (line 20) | @JsonProperty("name")
method setName (line 25) | @JsonSetter("name")
method getLfCompanyBelonging (line 30) | @JsonProperty("lfCompanyBelonging")
method setLfCompanyBelonging (line 35) | @JsonSetter("lfCompanyBelonging")
method getSsn (line 40) | @JsonProperty("ssn")
method setSsn (line 45) | @JsonSetter("ssn")
method getTicketLifetime (line 50) | @JsonProperty("ticketLifetime")
method setTicketLifetime (line 55) | @JsonSetter("ticketLifetime")
method getPinPadAvailable (line 60) | @JsonProperty("pinPadAvailable")
method setPinPadAvailable (line 65) | @JsonSetter("pinPadAvailable")
method getTicket (line 70) | @JsonProperty("ticket")
method setTicket (line 75) | @JsonSetter("ticket")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/NumberResponse.java
class NumberResponse (line 6) | public class NumberResponse {
method getNumber (line 12) | @JsonProperty("number")
method setNumber (line 17) | @JsonSetter("number")
method getNumberPair (line 22) | @JsonProperty("numberPair")
method setNumberPair (line 27) | @JsonSetter("numberPair")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/Transaction.java
class Transaction (line 6) | public class Transaction {
method getText (line 14) | @JsonProperty("text")
method setText (line 19) | @JsonSetter("text")
method getTransactiondate (line 24) | @JsonProperty("transactiondate")
method setTransactiondate (line 29) | @JsonSetter("transactiondate")
method getAmmount (line 34) | @JsonProperty("ammount")
method setAmmount (line 39) | @JsonSetter("ammount")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/lansforsakringar/model/response/TransactionsResponse.java
class TransactionsResponse (line 8) | public class TransactionsResponse {
method getHasMore (line 16) | @JsonProperty("hasMore")
method setHasMore (line 21) | @JsonSetter("hasMore")
method getNextSequenceNumber (line 26) | @JsonProperty("nextSequenceNumber")
method setNextSequenceNumber (line 31) | @JsonSetter("nextSequenceNumber")
method getTransactions (line 36) | @JsonProperty("transactions")
method setTransactions (line 41) | @JsonSetter("transactions")
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/nordea/CaptchaBreaker.java
class CaptchaBreaker (line 7) | public class CaptchaBreaker {
method iMustBreakYou (line 11) | public static String iMustBreakYou(Bitmap bitmap) {
method extractNumber (line 54) | private static String extractNumber(Bitmap bitmap) {
class Segment (line 80) | class Segment {
method toString (line 86) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/nordea/CaptchaBreakerNumbers.java
class CaptchaBreakerNumbers (line 8) | public class CaptchaBreakerNumbers {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/nordea/Nordea.java
class Nordea (line 45) | public class Nordea extends Bank {
method Nordea (line 208) | public Nordea(Context context) {
method getBanktypeId (line 217) | @Override
method getName (line 222) | @Override
method Nordea (line 227) | public Nordea(String username, String password, Context context) throw...
method preLogin (line 233) | @Override
method login (line 280) | @Override
method update (line 291) | @Override
method updateTransactions (line 358) | @Override
method goToPage (line 376) | private void goToPage(int pageType) throws IOException {
method updateRegularTransactions (line 405) | public void updateRegularTransactions(Account account, Urllib urlopen)
method updateCreditTransactions (line 502) | public void updateCreditTransactions(Account account, Urllib urlopen)
class PageType (line 545) | private static class PageType {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/rikslunchen/Rikslunchen.java
class Rikslunchen (line 39) | public class Rikslunchen extends Bank {
method Rikslunchen (line 51) | public Rikslunchen(Context context) {
method getBanktypeId (line 60) | @Override
method getName (line 65) | @Override
method Rikslunchen (line 70) | public Rikslunchen(String username, String password, Context context) ...
method login (line 76) | @Override
method update (line 81) | @Override
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/rikslunchen/model/Envelope.java
class Envelope (line 23) | @Root
class Body (line 29) | public static class Body {
class GetBalanceResponse (line 37) | public static class GetBalanceResponse {
class Return (line 42) | public static class Return {
class Fault (line 52) | public static class Fault {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/exceptions/BankChoiceException.java
class BankChoiceException (line 23) | public class BankChoiceException extends Exception {
method BankChoiceException (line 29) | public BankChoiceException(String message) {
method BankChoiceException (line 33) | public BankChoiceException(String message, ArrayList<BankChoice> banks) {
method getBanks (line 41) | public ArrayList<BankChoice> getBanks() {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/exceptions/BankException.java
class BankException (line 19) | public class BankException extends Exception {
method BankException (line 23) | public BankException(String message) {
method BankException (line 27) | public BankException(String message, Throwable throwable) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/exceptions/LoginException.java
class LoginException (line 19) | public class LoginException extends Exception {
method LoginException (line 23) | public LoginException(String message) {
method LoginException (line 27) | public LoginException(String message, Exception cause) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/provider/IAccountTypes.java
type IAccountTypes (line 23) | public interface IAccountTypes {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/provider/IBankTransactionsProvider.java
type IBankTransactionsProvider (line 54) | public interface IBankTransactionsProvider {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/provider/IBankTypes.java
type IBankTypes (line 23) | public interface IBankTypes {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/utils/ExceptionUtils.java
class ExceptionUtils (line 12) | public class ExceptionUtils {
method blameBankdroid (line 53) | public static void blameBankdroid(Throwable exception) {
method concatArrays (line 84) | @VisibleForTesting
method getUltimateCause (line 92) | @VisibleForTesting
method cloneException (line 109) | @Nullable
method bankdroidifyStacktrace (line 139) | @VisibleForTesting
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/utils/FieldTypeMapper.java
class FieldTypeMapper (line 8) | public class FieldTypeMapper {
method toFieldType (line 10) | public static FieldType toFieldType(int androidFieldType) {
method fromFieldType (line 22) | public static int fromFieldType(FieldType fieldType) {
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/utils/Installation.java
class Installation (line 20) | public class Installation {
method id (line 33) | public synchronized static String id(Context context) {
method readInstallationFile (line 48) | private static String readInstallationFile(File installation) throws I...
method writeInstallationFile (line 56) | private static void writeInstallationFile(File installation) throws IO...
FILE: bankdroid-legacy/src/main/java/com/liato/bankdroid/utils/StringUtils.java
class StringUtils (line 5) | public class StringUtils {
method StringUtils (line 8) | private StringUtils() {
method getBytes (line 12) | public static byte[] getBytes(String string) {
method toString (line 20) | public static String toString(byte[] bytes) {
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/CertPinningSSLSocketFactory.java
class CertPinningSSLSocketFactory (line 51) | public class CertPinningSSLSocketFactory extends SSLSocketFactory {
method CertPinningSSLSocketFactory (line 63) | public CertPinningSSLSocketFactory(ClientCertificate clientCertificate,
method createSSLContext (line 73) | private SSLContext createSSLContext() throws IOException {
method getSSLContext (line 95) | private SSLContext getSSLContext() throws IOException {
method connectSocket (line 108) | @Override
method createSocket (line 149) | @Override
method createSocket (line 160) | @Override
method setHost (line 169) | public void setHost(String host) {
method secureSocket (line 176) | private Socket secureSocket(Socket socket) {
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/CertPinningTrustManager.java
class CertPinningTrustManager (line 10) | public class CertPinningTrustManager implements X509TrustManager {
method CertPinningTrustManager (line 16) | public CertPinningTrustManager(Certificate[] certificates, String host) {
method getAcceptedIssuers (line 21) | public X509Certificate[] getAcceptedIssuers() {
method checkClientTrusted (line 25) | @Override
method checkServerTrusted (line 31) | @Override
method setHost (line 46) | public void setHost(String host) {
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/CertificateReader.java
class CertificateReader (line 17) | public class CertificateReader {
method getCertificates (line 19) | public static Certificate[] getCertificates(Context context,
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/ClientCertificate.java
class ClientCertificate (line 5) | public class ClientCertificate {
method ClientCertificate (line 11) | public ClientCertificate(KeyStore keyStore, String password) {
method getPassword (line 16) | public String getPassword() {
method getKeyStore (line 20) | public KeyStore getKeyStore() {
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/HttpMethod.java
type HttpMethod (line 3) | public enum HttpMethod {
FILE: bankdroid-legacy/src/main/java/eu/nullbyte/android/urllib/Urllib.java
class Urllib (line 89) | public class Urllib {
method Urllib (line 113) | public Urllib(Context context) {
method Urllib (line 117) | public Urllib(Context context, Certificate[] pins) {
method Urllib (line 121) | public Urllib(Context context, ClientCertificate clientCert, Certifica...
method open (line 148) | public String open(String url) throws ClientProtocolException, IOExcep...
method post (line 157) | public String post(String url) throws ClientProtocolException, IOExcep...
method open (line 161) | public String open(String url, List<NameValuePair> postData)
method open (line 171) | public String open(String url, List<NameValuePair> postData, boolean f...
method openAsHttpResponse (line 180) | public HttpResponse openAsHttpResponse(String url, List<NameValuePair>...
method openAsHttpResponse (line 192) | public HttpResponse openAsHttpResponse(String url, boolean forcePost)
method openAsHttpResponse (line 197) | public HttpResponse openAsHttpResponse(String url, HttpEntity entity, ...
method openAsHttpResponse (line 211) | public HttpResponse openAsHttpResponse(String url, HttpMethod method)
method openAsHttpResponse (line 216) | public HttpResponse openAsHttpResponse(String url, HttpEntity entity, ...
method openStream (line 274) | public InputStream openStream(String url) throws ClientProtocolExcepti...
method toEntity (line 278) | public HttpEntity toEntity(List<NameValuePair> postData) {
method openStream (line 289) | public InputStream openStream(String url, List<NameValuePair> postData...
method openStream (line 294) | public InputStream openStream(String url, String postData, boolean for...
method openStream (line 305) | public InputStream openStream(String url, HttpEntity postData, boolean...
method close (line 330) | public void close() {
method getHttpContext (line 334) | public HttpContext getHttpContext() {
method getCurrentURI (line 338) | public String getCurrentURI() {
method getHttpclient (line 342) | public DefaultHttpClient getHttpclient() {
method setContentCharset (line 346) | public void setContentCharset(String charset) {
method setAllowCircularRedirects (line 352) | public void setAllowCircularRedirects(boolean allow) {
method addHeader (line 356) | public void addHeader(String key, String value) {
method setKeepAliveTimeout (line 360) | public void setKeepAliveTimeout(final int seconds) {
method removeHeader (line 369) | public String removeHeader(String key) {
method clearHeaders (line 373) | public void clearHeaders() {
method getHeaders (line 377) | public HashMap<String, String> getHeaders() {
method setFollowRedirects (line 381) | public void setFollowRedirects(boolean follow) {
method setUserAgent (line 397) | public void setUserAgent(String userAgent) {
method createUserAgentString (line 401) | private String createUserAgentString() {
method updateSocketFactoryHost (line 419) | private void updateSocketFactoryHost(HttpHost host) {
class BankdroidHttpClient (line 425) | class BankdroidHttpClient extends DefaultHttpClient {
method BankdroidHttpClient (line 427) | BankdroidHttpClient(ClientConnectionManager conman, HttpParams param...
method execute (line 431) | @Override
method execute (line 439) | @Override
method createClientRequestDirector (line 447) | @Override
class DefaultishRequestDirector (line 461) | class DefaultishRequestDirector extends DefaultRequestDirector {
method DefaultishRequestDirector (line 463) | public DefaultishRequestDirector(HttpRequestExecutor requestExec,
method execute (line 474) | @Override
FILE: bankdroid-legacy/src/test/java/com/liato/bankdroid/utils/ExceptionUtilsTest.java
class ExceptionUtilsTest (line 13) | public class ExceptionUtilsTest {
method testBlameBankdroid (line 14) | @Test
method testBlameBankdroidWithCause (line 39) | @Test
method testBlameBankdroidAlreadyToBlame (line 71) | @Test
method toStringWithStacktrace (line 85) | private String toStringWithStacktrace(Exception e) {
method testBankdroidifyStacktrace (line 93) | @Test
method testCloneExceptionWonky (line 111) | @Test
method testCloneExceptionNPE (line 126) | @Test
method testGetUltimateCauseRecursive (line 147) | @Test(timeout = 1000)
method testConcatArrays (line 155) | @Test
FILE: bankdroid-legacy/src/test/java/not/bankdroid/at/all/ExceptionFactory.java
class ExceptionFactory (line 8) | public class ExceptionFactory {
class WonkyException (line 9) | public static class WonkyException extends ConnectException {
method WonkyException (line 10) | public WonkyException(int wonky) {
method getWonkyException (line 15) | public static WonkyException getWonkyException() {
method getException (line 19) | public static Exception getException() {
method getExceptionWithCause (line 23) | public static Exception getExceptionWithCause() {
FILE: bankdroid-legacy/src/test/java/not/bankdroid/at/all/ExceptionThrower.java
class ExceptionThrower (line 8) | public class ExceptionThrower {
class WonkyException (line 9) | public static class WonkyException extends ConnectException {
method WonkyException (line 10) | public WonkyException(int wonky) {
method throwWonkyException (line 15) | public static void throwWonkyException() throws WonkyException {
FILE: tools/nordea_captcha_breaker/captchabreaker.py
function guess_number (line 12) | def guess_number(img):
function getCaptcha (line 29) | def getCaptcha():
function extract_numbers (line 39) | def extract_numbers(img):
function numbers2text (line 70) | def numbers2text(img, numbers):
class CaptchaNumber (line 81) | class CaptchaNumber(object):
method __init__ (line 82) | def __init__(self, number, points):
method __repr__ (line 86) | def __repr__(self):
function main (line 90) | def main():
function create_html (line 137) | def create_html():
Condensed preview — 328 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,278K chars).
[
{
"path": ".gitattributes",
"chars": 22,
"preview": "CHANGELOG merge=union\n"
},
{
"path": ".gitignore",
"chars": 603,
"preview": "# built application files\n*.apk\n*.ap_\n\n# files for the dex VM\n*.dex\n\n# Java class files\n*.class\n\n# generated files\nbin/\n"
},
{
"path": ".travis.yml",
"chars": 711,
"preview": "language: android\njdk: oraclejdk8\n\nbefore_cache:\n - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock\ncache:\n direct"
},
{
"path": "CHANGELOG",
"chars": 21853,
"preview": "Please view this file on the master branch, on stable branches it's out of date.\n\n(Unreleased)\n* Update certificates\n* R"
},
{
"path": "CONTRIBUTING.md",
"chars": 5739,
"preview": "# Contribute to Bankdroid\n\nThis guide details how to use issues and pull requests (for new code) to improve Bankdroid.\n\n"
},
{
"path": "CONTRIBUTORS.txt",
"chars": 3132,
"preview": "--------------------------------------------------------------------------------\nDevelopment\n---------------------------"
},
{
"path": "LICENSE",
"chars": 545,
"preview": "Copyright 2015 liato\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except i"
},
{
"path": "README.rst",
"chars": 2331,
"preview": ".. image:: https://travis-ci.org/liato/android-bankdroid.svg?branch=master\n :target: https://travis-ci.org/liato/andr"
},
{
"path": "app/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "app/build.gradle",
"chars": 2791,
"preview": "buildscript {\n repositories {\n maven { url 'https://maven.fabric.io/public' }\n maven {\n url "
},
{
"path": "app/crashlytics.properties.example",
"chars": 48,
"preview": "apiSecret=YOUR_BUILD_SECRET\napiKey=YOUR_API_KEY\n"
},
{
"path": "app/proguard-rules.pro",
"chars": 1261,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /h"
},
{
"path": "app/src/main/AndroidManifest.xml",
"chars": 5941,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tpackage=\"c"
},
{
"path": "app/src/main/aidl/com/sonyericsson/extras/liveview/IPluginServiceCallbackV1.aidl",
"chars": 2371,
"preview": "/*\n * Copyright (c) 2010 Sony Ericsson\n *\n * Permission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "app/src/main/aidl/com/sonyericsson/extras/liveview/IPluginServiceV1.aidl",
"chars": 5603,
"preview": "/*\n * Copyright (c) 2010 Sony Ericsson\n *\n * Permission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "app/src/main/java/com/ast/util/CookieParser.java",
"chars": 3210,
"preview": "/*\n * Copyright (C) 2009 hessdroid@gmail.com\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * yo"
},
{
"path": "app/src/main/java/com/liato/bankdroid/AboutActivity.java",
"chars": 2117,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/ActivityHelper.java",
"chars": 891,
"preview": "package com.liato.bankdroid;\n\nimport android.app.Activity;\nimport android.app.Dialog;\nimport android.content.Context;\nim"
},
{
"path": "app/src/main/java/com/liato/bankdroid/BankEditActivity.java",
"chars": 14747,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/BankdroidApplication.java",
"chars": 705,
"preview": "package com.liato.bankdroid;\n\nimport com.liato.bankdroid.utils.LoggingUtils;\n\nimport android.app.Application;\nimport and"
},
{
"path": "app/src/main/java/com/liato/bankdroid/BetterPopupWindow.java",
"chars": 6403,
"preview": "package com.liato.bankdroid;\n\nimport android.content.Context;\nimport android.graphics.Rect;\nimport android.graphics.draw"
},
{
"path": "app/src/main/java/com/liato/bankdroid/DataRetrieverTask.java",
"chars": 7414,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/LockableActivity.java",
"chars": 11794,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/LockablePreferenceActivity.java",
"chars": 4938,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/MainActivity.java",
"chars": 17331,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/PairApplicationsActivity.java",
"chars": 4339,
"preview": "/**\n * Copyright 2011 Magnus Andersson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may "
},
{
"path": "app/src/main/java/com/liato/bankdroid/SettingsActivity.java",
"chars": 8625,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/StartupReceiver.java",
"chars": 3271,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/TimePreference.java",
"chars": 2042,
"preview": "//This class based on tutorial found here https://github.com/commonsguy/cw-lunchlist/blob/master/19-Alarm/LunchList/src"
},
{
"path": "app/src/main/java/com/liato/bankdroid/TransactionsActivity.java",
"chars": 7362,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/WebViewActivity.java",
"chars": 8768,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/adapters/AccountsAdapter.java",
"chars": 7171,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/appwidget/AutoRefreshService.java",
"chars": 18231,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider.java",
"chars": 18787,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider_2x1.java",
"chars": 738,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/appwidget/BankdroidWidgetProvider_4x1.java",
"chars": 738,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/appwidget/WidgetConfigureActivity.java",
"chars": 5709,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/banking/BankFactory.java",
"chars": 12129,
"preview": "/*\n * Copyright (C) 2014 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/db/DBAdapter.java",
"chars": 9037,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/db/Database.java",
"chars": 846,
"preview": "package com.liato.bankdroid.db;\n\npublic class Database {\n\n static final String DATABASE_NAME = \"data\";\n\n static fi"
},
{
"path": "app/src/main/java/com/liato/bankdroid/db/DatabaseHelper.java",
"chars": 6118,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/db/LegacyDatabase.java",
"chars": 4007,
"preview": "package com.liato.bankdroid.db;\n\nclass LegacyDatabase {\n\n static final String BANK_TABLE_NAME = \"banks\";\n\n static "
},
{
"path": "app/src/main/java/com/liato/bankdroid/liveview/LiveViewService.java",
"chars": 9077,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/liveview/PluginConstants.java",
"chars": 2618,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/liveview/PluginReceiver.java",
"chars": 3440,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/liveview/PluginUtils.java",
"chars": 3195,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPattern.java",
"chars": 18282,
"preview": "/*\n * Copyright (C) 2007 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPatternExample.java",
"chars": 3375,
"preview": "/*\n * Copyright (C) 2008 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/ChooseLockPatternTutorial.java",
"chars": 2556,
"preview": "/*\n * Copyright (C) 2008 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/ConfirmLockPattern.java",
"chars": 10658,
"preview": "/*\n * Copyright (C) 2008 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/LinearLayoutWithDefaultTouchRecepient.java",
"chars": 2247,
"preview": "/*\n * Copyright (C) 2008 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/LockPatternUtils.java",
"chars": 13152,
"preview": "/*\n * Copyright (C) 2007 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/lockpattern/LockPatternView.java",
"chars": 36760,
"preview": "/*\n * Copyright (C) 2007 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
},
{
"path": "app/src/main/java/com/liato/bankdroid/provider/BankTransactionsProvider.java",
"chars": 8125,
"preview": "/*\n * Copyright (C) 2010 Magnusart <http://www.magnusart.com>\n *\n * Licensed under the Apache License, Version 2.0 (the "
},
{
"path": "app/src/main/java/com/liato/bankdroid/utils/EmulatorUtils.java",
"chars": 1505,
"preview": "package com.liato.bankdroid.utils;\n\nimport android.os.Build;\n\nimport java.util.Arrays;\nimport java.util.HashSet;\nimport "
},
{
"path": "app/src/main/java/com/liato/bankdroid/utils/LoggingUtils.java",
"chars": 3900,
"preview": "package com.liato.bankdroid.utils;\n\nimport com.crashlytics.android.Crashlytics;\nimport com.crashlytics.android.answers.A"
},
{
"path": "app/src/main/java/com/liato/bankdroid/utils/NetworkUtils.java",
"chars": 978,
"preview": "package com.liato.bankdroid.utils;\n\nimport java.net.DatagramSocket;\nimport java.net.InetAddress;\nimport java.net.SocketE"
},
{
"path": "app/src/main/java/net/margaritov/preference/colorpicker/AlphaPatternDrawable.java",
"chars": 3751,
"preview": "/*\n * Copyright (C) 2010 Daniel Nilsson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
},
{
"path": "app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerDialog.java",
"chars": 3645,
"preview": "/*\n * Copyright (C) 2010 Daniel Nilsson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
},
{
"path": "app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerPanelView.java",
"chars": 4445,
"preview": "/*\n * Copyright (C) 2010 Daniel Nilsson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
},
{
"path": "app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerPreference.java",
"chars": 8072,
"preview": "/*\n * Copyright (C) 2011 Sergey Margaritov\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you "
},
{
"path": "app/src/main/java/net/margaritov/preference/colorpicker/ColorPickerView.java",
"chars": 25150,
"preview": "/*\n * Copyright (C) 2010 Daniel Nilsson\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
},
{
"path": "app/src/main/java/net/sf/andhsli/hotspotlogin/SimpleCrypto.java",
"chars": 2544,
"preview": "/*\n * Copyright (c) 2009 Ferenc Hechler - ferenc_hechler@users.sourceforge.net\n * http://www.androidsnippets.org/snippet"
},
{
"path": "app/src/main/res/anim/grow_from_bottom.xml",
"chars": 509,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/grow_from_top.xml",
"chars": 507,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/grow_from_topleft_to_bottomright.xml",
"chars": 506,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/shrink_from_bottom.xml",
"chars": 507,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/shrink_from_bottomright_to_topleft.xml",
"chars": 506,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/shrink_from_top.xml",
"chars": 509,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<scale\n\t\tandroi"
},
{
"path": "app/src/main/res/anim/zoom_enter.xml",
"chars": 1208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n/*\n** Copyright 2009, The Android Open Source Project\n**\n** Licensed under t"
},
{
"path": "app/src/main/res/anim/zoom_exit.xml",
"chars": 1471,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n/*\n** Copyright 2009, The Android Open Source Project\n**\n** Licensed under t"
},
{
"path": "app/src/main/res/drawable/btn_check.xml",
"chars": 2069,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<selector\n\txmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<!-- Ena"
},
{
"path": "app/src/main/res/drawable/lock_anim.xml",
"chars": 1421,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n/*\n** Copyright 2008, The Android Open Source Project\n**\n** Licensed under t"
},
{
"path": "app/src/main/res/drawable/menu_button.xml",
"chars": 376,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector\n\txmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<item\n\t\ta"
},
{
"path": "app/src/main/res/drawable/popup_button.xml",
"chars": 417,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item a"
},
{
"path": "app/src/main/res/drawable/widget_progress.xml",
"chars": 663,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<animation-list\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandr"
},
{
"path": "app/src/main/res/layout/about.xml",
"chars": 2308,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroi"
},
{
"path": "app/src/main/res/layout/bank.xml",
"chars": 3638,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/layout/bank_spinner_dropdown_item.xml",
"chars": 854,
"preview": "<LinearLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tstyle=\"?android:attr/spinnerItemStyle\"\n\tandro"
},
{
"path": "app/src/main/res/layout/bank_spinner_item.xml",
"chars": 780,
"preview": "<LinearLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tstyle=\"?android:attr/spinnerItemStyle\"\n\tandro"
},
{
"path": "app/src/main/res/layout/choose_lock_pattern.xml",
"chars": 3334,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project\n\n Licensed under the "
},
{
"path": "app/src/main/res/layout/choose_lock_pattern_example.xml",
"chars": 3389,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project\n\n Licensed under the "
},
{
"path": "app/src/main/res/layout/choose_lock_pattern_tutorial.xml",
"chars": 3076,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project\n\n Licensed under the "
},
{
"path": "app/src/main/res/layout/confirm_lock_pattern.xml",
"chars": 2013,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project\n\n Licensed under the "
},
{
"path": "app/src/main/res/layout/dialog_color_picker.xml",
"chars": 2459,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2010 Daniel Nilsson\n\n Licensed under the Apache License, V"
},
{
"path": "app/src/main/res/layout/empty.xml",
"chars": 194,
"preview": "<LinearLayout android:id=\"@+id/LinearLayout01\" android:layout_width=\"fill_parent\" xmlns:android=\"http://schemas.android."
},
{
"path": "app/src/main/res/layout/listitem_accounts_group.xml",
"chars": 3972,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/layout/listitem_accounts_item.xml",
"chars": 2006,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/layout/main.xml",
"chars": 3131,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "app/src/main/res/layout/pair_applications_layout.xml",
"chars": 2592,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandr"
},
{
"path": "app/src/main/res/layout/popup_account.xml",
"chars": 1143,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroi"
},
{
"path": "app/src/main/res/layout/popup_bank.xml",
"chars": 1561,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\tandroi"
},
{
"path": "app/src/main/res/layout/toolbar.xml",
"chars": 529,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.Toolbar xmlns:app=\"http://schemas.android.com/apk/res-"
},
{
"path": "app/src/main/res/layout/transaction_date.xml",
"chars": 1276,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/layout/transaction_item.xml",
"chars": 1635,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmln"
},
{
"path": "app/src/main/res/layout/transactions.xml",
"chars": 1850,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/layout/webview.xml",
"chars": 471,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n\tandroid:layout_width=\"fill_parent\"\n\tandroid:layout_height=\"fill_par"
},
{
"path": "app/src/main/res/layout/widget.xml",
"chars": 3744,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmln"
},
{
"path": "app/src/main/res/layout/widget_large.xml",
"chars": 4074,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmln"
},
{
"path": "app/src/main/res/layout/widget_large_transparent.xml",
"chars": 4022,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmln"
},
{
"path": "app/src/main/res/layout/widget_transparent.xml",
"chars": 3749,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<RelativeLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmln"
},
{
"path": "app/src/main/res/layout-land/choose_lock_pattern.xml",
"chars": 3129,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project Licensed under the\n\tApach"
},
{
"path": "app/src/main/res/layout-land/confirm_lock_pattern.xml",
"chars": 2126,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2008 The Android Open Source Project Licensed under the \n\tApac"
},
{
"path": "app/src/main/res/layout-land/dialog_color_picker.xml",
"chars": 2415,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2010 Daniel Nilsson\n\n Licensed under the Apache License, V"
},
{
"path": "app/src/main/res/menu/about.xml",
"chars": 378,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:app=\""
},
{
"path": "app/src/main/res/menu/main.xml",
"chars": 905,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:app=\"h"
},
{
"path": "app/src/main/res/values/array.xml",
"chars": 1309,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string-array\n\t\tname=\"refreshrateNames\">\n\t\t<item>15 minutes</item>\n\t"
},
{
"path": "app/src/main/res/values/colors.xml",
"chars": 832,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Copyright (C) 2007 The Android Open Source Project\n\n Licensed under the "
},
{
"path": "app/src/main/res/values/config.xml",
"chars": 117,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"default_led_color\">#ff0000ff</color>\n</resources>"
},
{
"path": "app/src/main/res/values/strings.xml",
"chars": 18584,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\">\n <string name"
},
{
"path": "app/src/main/res/values/styles.xml",
"chars": 2901,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources xmlns:tools=\"http://schemas.android.com/tools\">\n\t<style\n\t\tname=\"Widget"
},
{
"path": "app/src/main/res/values/themes.xml",
"chars": 959,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <!--<style name=\"BankdroidTheme\" parent=\"android:Theme.Black\">--"
},
{
"path": "app/src/main/res/values-sv/array.xml",
"chars": 766,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string-array\n\t\tname=\"refreshrateNames\">\n\t\t<item>15 minuter</item>\n\t"
},
{
"path": "app/src/main/res/values-sv/strings.xml",
"chars": 17096,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources xmlns:xliff=\"urn:oasis:names:tc:xliff:document:1.2\">\n\n <string name"
},
{
"path": "app/src/main/res/values-v21/themes.xml",
"chars": 537,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <style name=\"BankdroidTheme\" parent=\"BaseTheme\">\n <item na"
},
{
"path": "app/src/main/res/xml/appwidget_info.xml",
"chars": 355,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<appwidget-provider xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/xml/appwidget_info_large.xml",
"chars": 361,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<appwidget-provider xmlns:android=\"http://schemas.android.com/apk/res/android\"\n "
},
{
"path": "app/src/main/res/xml/settings.xml",
"chars": 11200,
"preview": "<PreferenceScreen\n\txmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<PreferenceCategory\n\t\tandroid:title=\"@st"
},
{
"path": "app/src/test/java/com/liato/bankdroid/DataRetrieverTaskTest.java",
"chars": 3951,
"preview": "package com.liato.bankdroid;\n\nimport com.liato.bankdroid.banking.Bank;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n"
},
{
"path": "app/src/test/java/com/liato/bankdroid/appwidget/DataRetrieverTaskTest.java",
"chars": 3988,
"preview": "package com.liato.bankdroid.appwidget;\n\nimport com.liato.bankdroid.banking.Account;\nimport com.liato.bankdroid.banking.B"
},
{
"path": "bankdroid-core/build.gradle",
"chars": 219,
"preview": "apply plugin: 'java'\napply from: '../config/quality/quality.gradle'\nsourceCompatibility = JavaVersion.VERSION_1_7\ntarget"
},
{
"path": "bankdroid-core/src/main/java/com/liato/bankdroid/configuration/DefaultConnectionConfiguration.java",
"chars": 915,
"preview": "package com.liato.bankdroid.configuration;\n\nimport com.liato.bankdroid.api.configuration.Field;\nimport com.liato.bankdro"
},
{
"path": "bankdroid-core/src/main/resources/i18n/application.properties",
"chars": 158,
"preview": "field.provider.configuration.name.label=Custom Name\nfield.provider.configuration.username.label=Username\nfield.provider."
},
{
"path": "bankdroid-core/src/main/resources/i18n/application_sv_SE.properties",
"chars": 160,
"preview": "field.provider.configuration.name.label=Eget Namn\nfield.provider.configuration.username.label=Användarnamn\nfield.provide"
},
{
"path": "bankdroid-interface/build.gradle",
"chars": 253,
"preview": "apply plugin: 'java'\napply from: '../config/quality/quality.gradle'\nsourceCompatibility = JavaVersion.VERSION_1_7\ntarget"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/Provider.java",
"chars": 815,
"preview": "package com.liato.bankdroid.api;\n\nimport com.liato.bankdroid.api.configuration.ProviderConfiguration;\n\n/**\n * Represents"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/ProviderFactory.java",
"chars": 375,
"preview": "package com.liato.bankdroid.api;\n\n/**\n * Is responsible for creating new instances of {@link Provider} objects. This sho"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/Entry.java",
"chars": 945,
"preview": "package com.liato.bankdroid.api.configuration;\n\npublic class Entry {\n\n private final String mKey;\n private final S"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/Field.java",
"chars": 2623,
"preview": "package com.liato.bankdroid.api.configuration;\n\nimport java.util.List;\n\n/**\n * Represent an input field that is rendered"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldBuilder.java",
"chars": 4873,
"preview": "package com.liato.bankdroid.api.configuration;\n\nimport java.util.Collections;\nimport java.util.List;\n\nimport java.util.R"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldType.java",
"chars": 427,
"preview": "package com.liato.bankdroid.api.configuration;\n\npublic enum FieldType {\n /**\n * Represents a regular input text f"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/FieldValidator.java",
"chars": 285,
"preview": "package com.liato.bankdroid.api.configuration;\n\npublic interface FieldValidator {\n\n /**\n * Validates a field valu"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/configuration/ProviderConfiguration.java",
"chars": 475,
"preview": "package com.liato.bankdroid.api.configuration;\n\nimport java.util.List;\n\n/**\n * Holds the configuration for a provider.\n "
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/ProviderConnection.java",
"chars": 1092,
"preview": "package com.liato.bankdroid.api.domain;\n\nimport com.liato.bankdroid.api.domain.account.Account;\n\nimport java.math.BigDec"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Account.java",
"chars": 950,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.math.BigDecimal;\nimport java.util.Map;\n\n/**\n * A parent int"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/CreditCardAccount.java",
"chars": 502,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.math.BigDecimal;\nimport java.util.Collection;\n\n/**\n * Repre"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Equity.java",
"chars": 1274,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.math.BigDecimal;\n\n/**\n * Represent a single equity, could b"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/EquityAccount.java",
"chars": 859,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.math.BigDecimal;\nimport java.util.Collection;\n\n/**\n * Repre"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/LiabilityAccount.java",
"chars": 578,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.util.Collection;\n\n/**\n * Represents a liability account. A "
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Payment.java",
"chars": 702,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport org.joda.time.DateTime;\n\nimport java.math.BigDecimal;\n\n/**\n * Re"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/PrePaidCardAccount.java",
"chars": 476,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport org.joda.time.DateTime;\n\n/**\n * Represents a prepaid card. e.g. "
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/Transaction.java",
"chars": 981,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport org.joda.time.DateTime;\n\nimport java.math.BigDecimal;\n\n/**\n * Re"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/TransactionAccount.java",
"chars": 350,
"preview": "package com.liato.bankdroid.api.domain.account;\n\nimport java.util.Collection;\n\n/**\n * Represents a transaction account. "
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/AbstractAccountBuilder.java",
"chars": 1367,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport java.math.BigDecimal;\nimport java.util.HashMap;\nimport java"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/AccountBuilder.java",
"chars": 1720,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.Account;\n\nimport jav"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/CreditCardAccountBuilder.java",
"chars": 2141,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.CreditCardAccount;\ni"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/EquityAccountBuilder.java",
"chars": 3046,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.Equity;\nimport com.l"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/EquityBuilder.java",
"chars": 2844,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.Equity;\nimport java."
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/LiabilityAccountBuilder.java",
"chars": 2206,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.LiabilityAccount;\nim"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/PrePaidCardAccountBuilder.java",
"chars": 1892,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.PrePaidCardAccount;\n"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/TransactionAccountBuilder.java",
"chars": 1994,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\nimport com.liato.bankdroid.api.domain.account.Transaction;\nimport "
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/domain/account/impl/TransactionBuilder.java",
"chars": 1763,
"preview": "package com.liato.bankdroid.api.domain.account.impl;\n\n\nimport com.liato.bankdroid.api.domain.account.Transaction;\n\nimpor"
},
{
"path": "bankdroid-interface/src/main/java/com/liato/bankdroid/api/service/ServiceLoader.java",
"chars": 552,
"preview": "package com.liato.bankdroid.api.service;\n\nimport com.liato.bankdroid.api.ProviderFactory;\n\nimport java.util.Set;\n\n/**\n *"
},
{
"path": "bankdroid-legacy/build.gradle",
"chars": 1402,
"preview": "apply plugin: 'com.android.library'\napply from: '../config/quality/quality.gradle'\n\nandroid {\n compileSdkVersion 25\n "
},
{
"path": "bankdroid-legacy/src/main/AndroidManifest.xml",
"chars": 223,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"com.liato.bankdroid.legacy\">\n\n <app"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/Helpers.java",
"chars": 9265,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Account.java",
"chars": 4001,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Bank.java",
"chars": 15600,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/BankChoice.java",
"chars": 1262,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/BasicProviderConfiguration.java",
"chars": 1491,
"preview": "package com.liato.bankdroid.banking;\n\nimport com.liato.bankdroid.api.configuration.Field;\nimport com.liato.bankdroid.api"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyBankFactory.java",
"chars": 8322,
"preview": "package com.liato.bankdroid.banking;\n\nimport com.liato.bankdroid.banking.banks.AkeliusInvest;\nimport com.liato.bankdroid"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyBankHelper.java",
"chars": 1664,
"preview": "package com.liato.bankdroid.banking;\n\nimport com.liato.bankdroid.provider.IBankTypes;\n\nimport java.lang.reflect.Field;\ni"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/LegacyProviderConfiguration.java",
"chars": 2271,
"preview": "package com.liato.bankdroid.banking;\nimport com.liato.bankdroid.api.configuration.Field;\nimport com.liato.bankdroid.api."
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/Transaction.java",
"chars": 2205,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AbsIkanoPartner.java",
"chars": 8155,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licen"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AkeliusInvest.java",
"chars": 9551,
"preview": "/* Copyright (C) 2012 Nullbyte <http://nullbyte.eu>, first version by Snah@Swedroid 2012-01-06\n *\n * Licensed under the "
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AkeliusSpar.java",
"chars": 9620,
"preview": "/* Copyright (C) 2012 Nullbyte <http://nullbyte.eu>, first version by Snah@Swedroid 2012-01-06\n * Modified for Akelius S"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/AppeakPoker.java",
"chars": 4070,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n * Contributors: PMC\n *\n * Licensed under the Apache License, Ver"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BetterGlobe.java",
"chars": 6375,
"preview": "/* Copyright (C) 2012 Nullbyte <http://nullbyte.eu>\n * BetterGlobe support by Per Wigren <per.wigren@gmail.com>\n *\n * Li"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Bioklubben.java",
"chars": 6633,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BlekingeTrafiken.java",
"chars": 4832,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Bredband2VoIP.java",
"chars": 6418,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/BrummerKF.java",
"chars": 7248,
"preview": "/* Copyright (C) 2012 Nullbyte <http://nullbyte.eu>\n * Brummer Privat Kapitalförsäkring & Pension support by Per Wigren "
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/CSN.java",
"chars": 10050,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Chalmrest.java",
"chars": 5656,
"preview": "package com.liato.bankdroid.banking.banks;\n\nimport com.liato.bankdroid.Helpers;\nimport com.liato.bankdroid.banking.Accou"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/DanskeBank.java",
"chars": 9668,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Everydaycard.java",
"chars": 5134,
"preview": "/*\n * Copyright (C) 2011 Nullbyte <http://nullbyte.eu>\n * Copyright (C) 2011, 2012 Andreas Gunnerås\n *\n * Licensed under"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/FirstCard.java",
"chars": 6779,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Hemkop.java",
"chars": 8861,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n * Contributors: firetech\n *\n * Licensed under the Apache License"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Hors.java",
"chars": 6498,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/IKEA.java",
"chars": 1799,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/IkanoBank.java",
"chars": 9428,
"preview": "/*\n * Copyright (C) 2013 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Jojo.java",
"chars": 5487,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/McDonalds.java",
"chars": 5622,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n * Contributors: PMC\n *\n * Licensed under the Apache License, Ver"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Meniga.java",
"chars": 6408,
"preview": "package com.liato.bankdroid.banking.banks;\n\nimport com.liato.bankdroid.Helpers;\nimport com.liato.bankdroid.banking.Accou"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/MinPension.java",
"chars": 7307,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Nordnet.java",
"chars": 6342,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/OKQ8.java",
"chars": 9425,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n * Contributors: COLA\n *\n * Licensed under the Apache License, Ve"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Ostgotatrafiken.java",
"chars": 9081,
"preview": "/*\n * Copyright (C) 2014 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Osuuspankki.java",
"chars": 7377,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Payson.java",
"chars": 5028,
"preview": "/*\n * Copyright (C) 2010-2015 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"L"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/PlusGirot.java",
"chars": 6179,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SevenDay.java",
"chars": 5784,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SveaDirekt.java",
"chars": 6403,
"preview": "package com.liato.bankdroid.banking.banks;\n\nimport com.liato.bankdroid.banking.Account;\nimport com.liato.bankdroid.banki"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/SvenskaSpel.java",
"chars": 4771,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n * Contributors: Jonathan Hjertström (jh@nixi.com)\n *\n * Licensed"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/TestBank.java",
"chars": 6700,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/TicketRikskortet.java",
"chars": 7380,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Vasttrafik.java",
"chars": 6722,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/Zidisha.java",
"chars": 6286,
"preview": "/* Copyright (C) 2012 Nullbyte <http://nullbyte.eu>\n * Zidisha support by Per Wigren <per.wigren@gmail.com>\n *\n * Licens"
},
{
"path": "bankdroid-legacy/src/main/java/com/liato/bankdroid/banking/banks/americanexpress/AmericanExpress.java",
"chars": 8547,
"preview": "/*\n * Copyright (C) 2010 Nullbyte <http://nullbyte.eu>\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
}
]
// ... and 128 more files (download for full content)
About this extraction
This page contains the full source code of the liato/android-bankdroid GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 328 files (60.6 MB), approximately 313.4k tokens, and a symbol index with 1769 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.