Showing preview only (1,477K chars total). Download the full file or copy to clipboard to get everything.
Repository: Odoo-mobile/crm
Branch: master
Commit: b25516b8f745
Files: 345
Total size: 1.3 MB
Directory structure:
gitextract_1ybjx6vk/
├── .classpath
├── README.md
├── app/
│ ├── .gitignore
│ ├── app-release.apk
│ ├── build.gradle
│ ├── crm-app-release.apk
│ ├── libs/
│ │ └── swipe_library.jar
│ ├── manifest-merger-release-report.txt
│ ├── proguard-rules.pro
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ ├── com/
│ │ │ └── odoo/
│ │ │ ├── App.java
│ │ │ ├── OdooActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── addons/
│ │ │ │ ├── calendar/
│ │ │ │ │ ├── CalendarDashboard.java
│ │ │ │ │ ├── EventDetail.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ └── CalendarEvent.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CalendarSyncProvider.java
│ │ │ │ │ ├── services/
│ │ │ │ │ │ └── CalendarSyncService.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── CalendarUtils.java
│ │ │ │ │ ├── EventColorDialog.java
│ │ │ │ │ ├── ReminderDialog.java
│ │ │ │ │ └── TodayIcon.java
│ │ │ │ ├── crm/
│ │ │ │ │ ├── CRMDetail.java
│ │ │ │ │ ├── CRMLeads.java
│ │ │ │ │ ├── CRMOpportunities.java
│ │ │ │ │ ├── CRMOpportunitiesPager.java
│ │ │ │ │ ├── ConvertToOpportunityWizard.java
│ │ │ │ │ ├── ConvertToQuotation.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── CRMCaseCateg.java
│ │ │ │ │ │ ├── CRMCaseStage.java
│ │ │ │ │ │ └── CRMLead.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CRMLeadProvider.java
│ │ │ │ │ └── services/
│ │ │ │ │ └── CRMLeadSyncService.java
│ │ │ │ ├── customers/
│ │ │ │ │ ├── CustomerDetails.java
│ │ │ │ │ ├── Customers.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CustomersSyncProvider.java
│ │ │ │ │ ├── services/
│ │ │ │ │ │ └── CustomerSyncService.java
│ │ │ │ │ └── utils/
│ │ │ │ │ └── ShareUtil.java
│ │ │ │ ├── phonecall/
│ │ │ │ │ ├── PhoneCallDetail.java
│ │ │ │ │ ├── PhoneCalls.java
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── CallerWindow.java
│ │ │ │ │ │ ├── CustomerFinder.java
│ │ │ │ │ │ ├── IOnCustomerFindListener.java
│ │ │ │ │ │ └── receivers/
│ │ │ │ │ │ └── PhoneStateReceiver.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── CRMPhoneCalls.java
│ │ │ │ │ │ └── CRMPhoneCallsCategory.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── PhoneCallProvider.java
│ │ │ │ │ └── services/
│ │ │ │ │ └── PhoneCallSyncService.java
│ │ │ │ └── sale/
│ │ │ │ ├── AddProductLineWizard.java
│ │ │ │ ├── Sales.java
│ │ │ │ ├── SalesDetail.java
│ │ │ │ ├── models/
│ │ │ │ │ ├── AccountPaymentTerm.java
│ │ │ │ │ ├── ProductProduct.java
│ │ │ │ │ ├── SaleOrder.java
│ │ │ │ │ └── SalesOrderLine.java
│ │ │ │ ├── providers/
│ │ │ │ │ └── SaleOrderProvider.java
│ │ │ │ └── services/
│ │ │ │ └── SaleOrderSyncService.java
│ │ │ ├── base/
│ │ │ │ └── addons/
│ │ │ │ ├── BaseModels.java
│ │ │ │ ├── ir/
│ │ │ │ │ ├── IrAttachment.java
│ │ │ │ │ ├── IrModel.java
│ │ │ │ │ ├── feature/
│ │ │ │ │ │ └── OFileManager.java
│ │ │ │ │ └── providers/
│ │ │ │ │ └── IrModelProvider.java
│ │ │ │ ├── mail/
│ │ │ │ │ ├── MailMessage.java
│ │ │ │ │ ├── MailMessageSubType.java
│ │ │ │ │ └── widget/
│ │ │ │ │ ├── MailChatterCompose.java
│ │ │ │ │ ├── MailChatterView.java
│ │ │ │ │ ├── MailDetailDialog.java
│ │ │ │ │ └── MessageObserver.java
│ │ │ │ └── res/
│ │ │ │ ├── ResCompany.java
│ │ │ │ ├── ResCountry.java
│ │ │ │ ├── ResCurrency.java
│ │ │ │ ├── ResPartner.java
│ │ │ │ └── ResUsers.java
│ │ │ ├── config/
│ │ │ │ ├── Addons.java
│ │ │ │ ├── BaseConfig.java
│ │ │ │ └── IntroSliderItems.java
│ │ │ ├── core/
│ │ │ │ ├── account/
│ │ │ │ │ ├── About.java
│ │ │ │ │ ├── AppIntro.java
│ │ │ │ │ ├── BaseSettings.java
│ │ │ │ │ ├── ManageAccounts.java
│ │ │ │ │ ├── OdooAccountQuickManage.java
│ │ │ │ │ ├── OdooLogin.java
│ │ │ │ │ ├── OdooUserAskPassword.java
│ │ │ │ │ └── Profile.java
│ │ │ │ ├── auth/
│ │ │ │ │ ├── OdooAccountManager.java
│ │ │ │ │ ├── OdooAuthService.java
│ │ │ │ │ └── OdooAuthenticator.java
│ │ │ │ ├── orm/
│ │ │ │ │ ├── ODataRow.java
│ │ │ │ │ ├── OM2MRecord.java
│ │ │ │ │ ├── OM2ORecord.java
│ │ │ │ │ ├── OModel.java
│ │ │ │ │ ├── OModelRegistry.java
│ │ │ │ │ ├── OO2MRecord.java
│ │ │ │ │ ├── OSQLHelper.java
│ │ │ │ │ ├── OSQLite.java
│ │ │ │ │ ├── OValues.java
│ │ │ │ │ ├── ServerDataHelper.java
│ │ │ │ │ ├── annotation/
│ │ │ │ │ │ └── Odoo.java
│ │ │ │ │ ├── fields/
│ │ │ │ │ │ ├── OColumn.java
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ ├── OBlob.java
│ │ │ │ │ │ ├── OBoolean.java
│ │ │ │ │ │ ├── ODate.java
│ │ │ │ │ │ ├── ODateTime.java
│ │ │ │ │ │ ├── OFloat.java
│ │ │ │ │ │ ├── OHtml.java
│ │ │ │ │ │ ├── OInteger.java
│ │ │ │ │ │ ├── OSelection.java
│ │ │ │ │ │ ├── OText.java
│ │ │ │ │ │ ├── OTimestamp.java
│ │ │ │ │ │ ├── OTypeHelper.java
│ │ │ │ │ │ └── OVarchar.java
│ │ │ │ │ └── provider/
│ │ │ │ │ └── BaseModelProvider.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── ISyncFinishListener.java
│ │ │ │ │ ├── ISyncServiceListener.java
│ │ │ │ │ ├── OSyncAdapter.java
│ │ │ │ │ ├── OSyncDataUtils.java
│ │ │ │ │ ├── OSyncService.java
│ │ │ │ │ └── receivers/
│ │ │ │ │ └── ISyncFinishReceiver.java
│ │ │ │ ├── support/
│ │ │ │ │ ├── OUser.java
│ │ │ │ │ ├── OdooFields.java
│ │ │ │ │ ├── OdooInstancesSelectorDialog.java
│ │ │ │ │ ├── OdooLoginHelper.java
│ │ │ │ │ ├── OdooServerTester.java
│ │ │ │ │ ├── OdooUserLoginSelectorDialog.java
│ │ │ │ │ ├── addons/
│ │ │ │ │ │ ├── AddonsHelper.java
│ │ │ │ │ │ ├── OAddon.java
│ │ │ │ │ │ └── fragment/
│ │ │ │ │ │ ├── BaseFragment.java
│ │ │ │ │ │ ├── IBaseFragment.java
│ │ │ │ │ │ ├── IOnSearchViewChangeListener.java
│ │ │ │ │ │ └── ISyncStatusObserverListener.java
│ │ │ │ │ ├── drawer/
│ │ │ │ │ │ └── ODrawerItem.java
│ │ │ │ │ ├── list/
│ │ │ │ │ │ ├── IOnItemClickListener.java
│ │ │ │ │ │ ├── OCursorListAdapter.java
│ │ │ │ │ │ └── OListAdapter.java
│ │ │ │ │ └── sync/
│ │ │ │ │ └── SyncUtils.java
│ │ │ │ └── utils/
│ │ │ │ ├── BitmapUtils.java
│ │ │ │ ├── IntentUtils.java
│ │ │ │ ├── JSONUtils.java
│ │ │ │ ├── OActionBarUtils.java
│ │ │ │ ├── OAlert.java
│ │ │ │ ├── OAlertDialog.java
│ │ │ │ ├── OControls.java
│ │ │ │ ├── OCursorUtils.java
│ │ │ │ ├── ODateUtils.java
│ │ │ │ ├── OFragmentUtils.java
│ │ │ │ ├── OListUtils.java
│ │ │ │ ├── OPreferenceManager.java
│ │ │ │ ├── OResource.java
│ │ │ │ ├── OStorageUtils.java
│ │ │ │ ├── OStringColorUtil.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── controls/
│ │ │ │ │ └── ExpandableHeightGridView.java
│ │ │ │ ├── dialog/
│ │ │ │ │ └── OChoiceDialog.java
│ │ │ │ ├── drawer/
│ │ │ │ │ ├── DrawerUtils.java
│ │ │ │ │ └── ODrawerScrollView.java
│ │ │ │ ├── logger/
│ │ │ │ │ └── OLog.java
│ │ │ │ ├── notification/
│ │ │ │ │ └── ONotificationBuilder.java
│ │ │ │ ├── reminder/
│ │ │ │ │ ├── ReminderActionReceiver.java
│ │ │ │ │ ├── ReminderReceiver.java
│ │ │ │ │ └── ReminderUtils.java
│ │ │ │ └── sys/
│ │ │ │ ├── IOnActivityResultListener.java
│ │ │ │ ├── IOnBackPressListener.java
│ │ │ │ └── OCacheUtils.java
│ │ │ ├── datas/
│ │ │ │ └── OConstants.java
│ │ │ ├── news/
│ │ │ │ ├── News.java
│ │ │ │ ├── NewsDetail.java
│ │ │ │ ├── OdooNewsReceiver.java
│ │ │ │ └── models/
│ │ │ │ └── OdooNews.java
│ │ │ └── server/
│ │ │ └── notifications/
│ │ │ └── OdooServerNotificationReceiver.java
│ │ └── odoo/
│ │ └── controls/
│ │ ├── BezelImageView.java
│ │ ├── DateTimePicker.java
│ │ ├── ExpandableListControl.java
│ │ ├── ExpandableListOperationListener.java
│ │ ├── IOControlData.java
│ │ ├── IOnChangeCallback.java
│ │ ├── IOnDomainFilterCallbacks.java
│ │ ├── IOnQuickRecordCreateListener.java
│ │ ├── OBlobField.java
│ │ ├── OBooleanField.java
│ │ ├── OControlHelper.java
│ │ ├── ODateTimeField.java
│ │ ├── OEditTextField.java
│ │ ├── OField.java
│ │ ├── OForm.java
│ │ ├── OSelectionField.java
│ │ ├── SearchableItemActivity.java
│ │ └── fab/
│ │ ├── DirectionScrollListener.java
│ │ └── FloatingActionButton.java
│ └── res/
│ ├── drawable/
│ │ ├── circle_mask.xml
│ │ ├── circle_mask_gray.xml
│ │ ├── circle_mask_primary.xml
│ │ ├── circle_mask_secondary.xml
│ │ ├── drawer_background_cover.xml
│ │ ├── icon_bg_oval_blue.xml
│ │ ├── icon_bg_oval_green.xml
│ │ ├── icon_bg_oval_orange.xml
│ │ ├── icon_bg_oval_red.xml
│ │ ├── icon_bg_oval_violet.xml
│ │ ├── login_signup_button.xml
│ │ ├── login_signup_button_clicked.xml
│ │ ├── login_signup_button_normal.xml
│ │ ├── login_signup_control_bg.xml
│ │ └── tag_background.xml
│ ├── layout/
│ │ ├── activity_app_intro.xml
│ │ ├── base_about.xml
│ │ ├── base_account_ask_pass.xml
│ │ ├── base_account_item.xml
│ │ ├── base_account_quick_manage.xml
│ │ ├── base_attachment_item.xml
│ │ ├── base_control_searchable_layout.xml
│ │ ├── base_control_template.xml
│ │ ├── base_drawer.xml
│ │ ├── base_drawer_account_item.xml
│ │ ├── base_drawer_group_layout.xml
│ │ ├── base_drawer_menu_item.xml
│ │ ├── base_instance_item.xml
│ │ ├── base_intro_slider_view.xml
│ │ ├── base_login.xml
│ │ ├── base_mail_chatter.xml
│ │ ├── base_mail_chatter_item.xml
│ │ ├── base_mail_chatter_message_compose.xml
│ │ ├── base_mail_chatter_message_detail.xml
│ │ ├── base_manage_accounts.xml
│ │ ├── base_no_items_view.xml
│ │ ├── base_no_items_view.xml~
│ │ ├── base_profile.xml
│ │ ├── base_setting_activity.xml
│ │ ├── base_simple_list_item_1.xml
│ │ ├── base_simple_list_item_1_selected.xml
│ │ ├── base_toolbar.xml
│ │ ├── calendar_dashboard.xml
│ │ ├── calendar_dashboard_item_separator.xml
│ │ ├── calendar_dashboard_item_view.xml
│ │ ├── calendar_dashboard_items.xml
│ │ ├── calendar_event_detail_form.xml
│ │ ├── common_listview.xml
│ │ ├── crm_caller_window_layout.xml
│ │ ├── crm_convert_to_opportunity.xml
│ │ ├── crm_convert_to_opportunity_item.xml
│ │ ├── crm_convert_to_quotation.xml
│ │ ├── crm_detail.xml
│ │ ├── crm_item.xml
│ │ ├── crm_opportunity_pagger.xml
│ │ ├── crm_phonecall_detail.xml
│ │ ├── customer_detail.xml
│ │ ├── customer_filter_container.xml
│ │ ├── customer_row_item.xml
│ │ ├── event_color_chooser_item.xml
│ │ ├── event_color_grid.xml
│ │ ├── listview_data_loading_progress.xml
│ │ ├── news_detail.xml
│ │ ├── news_list.xml
│ │ ├── odoo_activity.xml
│ │ ├── odoo_news.xml
│ │ ├── phonecall_item.xml
│ │ ├── reminder_custom_dialog_view.xml
│ │ ├── reminder_item_view.xml
│ │ ├── sale_add_item.xml
│ │ ├── sale_detail.xml
│ │ ├── sale_order_item.xml
│ │ ├── sale_order_line_item.xml
│ │ └── sale_product_line_item.xml
│ ├── menu/
│ │ ├── menu_about.xml
│ │ ├── menu_base_login.xml
│ │ ├── menu_calendar_dashboard.xml
│ │ ├── menu_calendar_detail.xml
│ │ ├── menu_customer_detail.xml
│ │ ├── menu_dashboard_events.xml
│ │ ├── menu_dashboard_opportunity.xml
│ │ ├── menu_dashboard_phonecalls.xml
│ │ ├── menu_lead_detail.xml
│ │ ├── menu_lead_list_sheet.xml
│ │ ├── menu_leads.xml
│ │ ├── menu_opp_list_sheet.xml
│ │ ├── menu_partners.xml
│ │ ├── menu_phonecall_detail.xml
│ │ ├── menu_phonecalls.xml
│ │ ├── menu_quotation_cancel_sheet.xml
│ │ ├── menu_quotation_sheet.xml
│ │ ├── menu_sale_add_item.xml
│ │ ├── menu_sale_detail.xml
│ │ ├── menu_sales_order.xml
│ │ ├── menu_sheet_customer.xml
│ │ └── menu_so_sheet.xml
│ ├── values/
│ │ ├── attrs.xml
│ │ ├── base-strings.xml
│ │ ├── bool.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── fonts.xml
│ │ ├── strings.xml
│ │ ├── strings.xml~
│ │ ├── styles.xml
│ │ └── theme-values.xml
│ ├── values-v19/
│ │ └── bool.xml
│ ├── values-v21/
│ │ ├── colors.xml
│ │ ├── styles.xml
│ │ └── theme-values.xml
│ ├── values-w820dp/
│ │ └── dimens.xml
│ └── xml/
│ ├── authenticator.xml
│ ├── base_preference.xml
│ ├── calendar_sync_adapter.xml
│ ├── crm_sync_adapter.xml
│ ├── customer_sync_adapter.xml
│ ├── phonecall_sync_adapter.xml
│ └── sale_sync_adapter.xml
├── bottom-sheet-lib/
│ ├── bottom-sheet-lib.aar
│ ├── bottom-sheet-lib.iml
│ └── build.gradle
├── build.gradle
├── calendar-lib/
│ ├── build.gradle
│ ├── calendar-lib.aar
│ └── calendar-lib.iml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── intro-slider-lib/
│ ├── app.iml
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── odoo/
│ │ ├── widget/
│ │ │ └── slider/
│ │ │ └── navigator/
│ │ │ └── PagerNavigatorAdapter.java
│ │ └── widgets/
│ │ └── slider/
│ │ ├── SliderHelper.java
│ │ ├── SliderItem.java
│ │ ├── SliderPagerAdapter.java
│ │ └── SliderView.java
│ └── res/
│ ├── drawable/
│ │ └── intro_slider_dot_bg.xml
│ ├── layout/
│ │ ├── default_ui.xml
│ │ └── slider_default_view.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ └── values-v14/
│ └── styles.xml
├── local.properties
├── master-crm-studio-dpr.iml
├── odoo-rpc-v2/
│ ├── build.gradle
│ └── odoo-rpc-v2.aar
├── parallax-effect-lib/
│ ├── build.gradle
│ └── parallax-effect-lib.aar
├── settings.gradle
└── snackbar-lib/
├── build.gradle
├── snackbar-lib.aar
└── snackbar-lib.iml
================================================
FILE CONTENTS
================================================
================================================
FILE: .classpath
================================================
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry exported="true" kind="lib" path="libs/odoo-v2.jar"/>
<classpathentry kind="lib" path="libs/swipe_library.jar"/>
<classpathentry kind="lib" path="libs/android-support-v4.jar"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
================================================
FILE: README.md
================================================
Odoo Mobile Framework v2.0
==========================
<b>Android Studio Project</b>
<a href="https://www.odoo.com/start" target="_blank">
<img alt="Odoo Instace" src="https://dharmangsoni.odoo.com/website/image?max_height=768&field=datas&model=ir.attachment&id=42&max_width=250" style="height:50px; width:auto" />
</a>
Odoo is a powerful open source framework. With help of this framework we can rapidly develop almost any application.
World is contracting with the growth of mobile phone technology. As the number of users is increasing day by day, facilities are also increasing. Now a days mobiles are not used just for making calls but they have innumerable uses and can be used as a Camera , Music player, Tablet PC, T.V. , Web browser etc. And with the new technologies, new software and operating systems are required.
One of the most widely used mobile OS these days is ANDROID. Android is a software bunch comprising not only operating system but also middleware and key applications.
Odoo Mobile framework is an open source mobile application development framework with Odoo integration. With the help of mobile framework we can rapidly develop almost all Odoo supported application as faster as we can develop in Odoo Framework.
This framework contains its own ORM to handle mobile’s local database. So you do not have to worry about data comming from Odoo Server. It has pre-developed services and providers to make your application data synchronized with Odoo.
================================================
FILE: app/.gitignore
================================================
/build
================================================
FILE: app/build.gradle
================================================
apply plugin: 'com.android.application'
android {
signingConfigs {
}
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.odoo.crm"
minSdkVersion 14
targetSdkVersion 22
versionCode 7
versionName "1.0.7"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile files('libs/swipe_library.jar')
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.google.android.gms:play-services:7.5.0'
compile project(':intro-slider-lib')
compile project(':parallax-effect-lib')
compile project(':odoo-rpc-v2')
compile project(':calendar-lib')
compile project(':bottom-sheet-lib')
compile project(':snackbar-lib')
}
================================================
FILE: app/manifest-merger-release-report.txt
================================================
-- Merging decision tree log ---
manifest
ADDED from AndroidManifest.xml:2:1
xmlns:android
ADDED from AndroidManifest.xml:2:11
package
ADDED from AndroidManifest.xml:3:5
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:versionName
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:versionCode
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
uses-permission#android.permission.INTERNET
ADDED from AndroidManifest.xml:5:5
MERGED from com.google.android.gms:play-services-ads:7.5.0:20:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:21:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:21:5
MERGED from com.google.android.gms:play-services-appinvite:7.5.0:19:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:21:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:21:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:21:5
MERGED from com.google.android.gms:play-services-wallet:7.5.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:21:5
MERGED from master-crm:odoo-rpc-v2:unspecified:11:5
android:name
ADDED from AndroidManifest.xml:5:22
uses-permission#android.permission.VIBRATE
ADDED from AndroidManifest.xml:6:5
MERGED from master-crm:odoo-rpc-v2:unspecified:14:5
android:name
ADDED from AndroidManifest.xml:6:22
uses-permission#android.permission.ACCESS_WIFI_STATE
ADDED from AndroidManifest.xml:7:5
MERGED from master-crm:odoo-rpc-v2:unspecified:15:5
android:name
ADDED from AndroidManifest.xml:7:22
uses-permission#android.permission.ACCESS_NETWORK_STATE
ADDED from AndroidManifest.xml:8:5
MERGED from com.google.android.gms:play-services-ads:7.5.0:21:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:22:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:20:5
MERGED from com.google.android.gms:play-services-nearby:7.5.0:19:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:20:5
MERGED from master-crm:odoo-rpc-v2:unspecified:16:5
android:name
ADDED from AndroidManifest.xml:8:22
uses-permission#android.permission.GET_TASKS
ADDED from AndroidManifest.xml:9:5
android:name
ADDED from AndroidManifest.xml:9:22
uses-permission#android.permission.AUTHENTICATE_ACCOUNTS
ADDED from AndroidManifest.xml:10:5
android:name
ADDED from AndroidManifest.xml:10:22
uses-permission#android.permission.GET_ACCOUNTS
ADDED from AndroidManifest.xml:11:5
MERGED from com.google.android.gms:play-services-wallet:7.5.0:21:5
android:name
ADDED from AndroidManifest.xml:11:22
uses-permission#android.permission.USE_CREDENTIALS
ADDED from AndroidManifest.xml:12:5
MERGED from com.google.android.gms:play-services-wallet:7.5.0:22:5
android:name
ADDED from AndroidManifest.xml:12:22
uses-permission#android.permission.MANAGE_ACCOUNTS
ADDED from AndroidManifest.xml:13:5
android:name
ADDED from AndroidManifest.xml:13:22
uses-permission#android.permission.READ_SYNC_SETTINGS
ADDED from AndroidManifest.xml:14:5
android:name
ADDED from AndroidManifest.xml:14:22
uses-permission#android.permission.READ_SYNC_STATS
ADDED from AndroidManifest.xml:15:5
android:name
ADDED from AndroidManifest.xml:15:22
uses-permission#android.permission.WRITE_SYNC_SETTINGS
ADDED from AndroidManifest.xml:16:5
android:name
ADDED from AndroidManifest.xml:16:22
uses-permission#android.permission.WAKE_LOCK
ADDED from AndroidManifest.xml:17:5
MERGED from master-crm:odoo-rpc-v2:unspecified:17:5
android:name
ADDED from AndroidManifest.xml:17:22
uses-permission#com.google.android.c2dm.permission.RECEIVE
ADDED from AndroidManifest.xml:18:5
MERGED from master-crm:odoo-rpc-v2:unspecified:13:5
android:name
ADDED from AndroidManifest.xml:18:22
uses-permission#android.permission.READ_PHONE_STATE
ADDED from AndroidManifest.xml:19:5
MERGED from master-crm:odoo-rpc-v2:unspecified:12:5
android:name
ADDED from AndroidManifest.xml:19:22
uses-permission#android.permission.SYSTEM_ALERT_WINDOW
ADDED from AndroidManifest.xml:20:5
android:name
ADDED from AndroidManifest.xml:20:22
uses-permission#android.permission.CALL_PHONE
ADDED from AndroidManifest.xml:21:5
android:name
ADDED from AndroidManifest.xml:21:22
uses-permission#android.permission.READ_EXTERNAL_STORAGE
ADDED from AndroidManifest.xml:22:5
android:name
ADDED from AndroidManifest.xml:22:22
uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
ADDED from AndroidManifest.xml:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5
android:name
ADDED from AndroidManifest.xml:23:22
uses-permission#android.permission.MANAGE_DOCUMENTS
ADDED from AndroidManifest.xml:24:5
android:name
ADDED from AndroidManifest.xml:24:22
permission#com.odoo.crm.permission.C2D_MESSAGE
ADDED from AndroidManifest.xml:26:5
android:protectionLevel
ADDED from AndroidManifest.xml:28:9
android:name
ADDED from AndroidManifest.xml:27:9
application
ADDED from AndroidManifest.xml:30:5
MERGED from com.android.support:appcompat-v7:22.2.0:22:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.android.support:cardview-v7:22.0.0:22:5
MERGED from com.google.android.gms:play-services:7.5.0:19:5
MERGED from com.google.android.gms:play-services-ads:7.5.0:24:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:24:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:24:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-appindexing:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-appinvite:7.5.0:20:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-appstate:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-cast:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.android.support:mediarouter-v7:22.0.0:22:5
MERGED from com.android.support:appcompat-v7:22.2.0:22:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-drive:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-fitness:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-location:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:29:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-games:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-drive:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-gcm:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-identity:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-location:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:29:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:29:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-nearby:7.5.0:20:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-panorama:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-plus:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-safetynet:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-wallet:7.5.0:24:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-identity:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:29:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from com.google.android.gms:play-services-wearable:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:20:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from master-crm:intro-slider-lib:unspecified:11:5
MERGED from com.android.support:support-v4:22.2.0:22:5
MERGED from master-crm:parallax-effect-lib:unspecified:11:5
MERGED from master-crm:odoo-rpc-v2:unspecified:20:5
MERGED from master-crm:calendar-lib:unspecified:11:5
MERGED from master-crm:bottom-sheet-lib:unspecified:11:5
MERGED from master-crm:snackbar-lib:unspecified:11:5
android:label
ADDED from AndroidManifest.xml:35:9
android:allowBackup
ADDED from AndroidManifest.xml:32:9
android:icon
ADDED from AndroidManifest.xml:34:9
android:theme
ADDED from AndroidManifest.xml:37:9
android:hardwareAccelerated
ADDED from AndroidManifest.xml:33:9
android:largeHeap
ADDED from AndroidManifest.xml:36:9
android:name
ADDED from AndroidManifest.xml:31:9
activity#com.odoo.core.account.OdooLogin
ADDED from AndroidManifest.xml:38:9
android:screenOrientation
ADDED from AndroidManifest.xml:40:13
android:name
ADDED from AndroidManifest.xml:39:13
intent-filter#android.intent.action.MAIN+android.intent.category.LAUNCHER
ADDED from AndroidManifest.xml:41:13
action#android.intent.action.MAIN
ADDED from AndroidManifest.xml:42:17
android:name
ADDED from AndroidManifest.xml:42:25
category#android.intent.category.LAUNCHER
ADDED from AndroidManifest.xml:44:17
android:name
ADDED from AndroidManifest.xml:44:27
activity#com.odoo.core.account.ManageAccounts
ADDED from AndroidManifest.xml:47:9
android:name
ADDED from AndroidManifest.xml:47:19
activity#com.odoo.OdooActivity
ADDED from AndroidManifest.xml:48:9
android:name
ADDED from AndroidManifest.xml:48:19
activity#odoo.controls.SearchableItemActivity
ADDED from AndroidManifest.xml:49:9
android:name
ADDED from AndroidManifest.xml:49:19
activity#com.odoo.SettingsActivity
ADDED from AndroidManifest.xml:50:9
android:name
ADDED from AndroidManifest.xml:50:19
activity#com.odoo.core.account.AppIntro
ADDED from AndroidManifest.xml:51:9
android:screenOrientation
ADDED from AndroidManifest.xml:53:13
android:name
ADDED from AndroidManifest.xml:52:13
activity#com.odoo.base.addons.mail.widget.MailDetailDialog
ADDED from AndroidManifest.xml:54:9
android:theme
ADDED from AndroidManifest.xml:56:13
android:name
ADDED from AndroidManifest.xml:55:13
activity#com.odoo.base.addons.mail.widget.MailChatterCompose
ADDED from AndroidManifest.xml:57:9
android:theme
ADDED from AndroidManifest.xml:59:13
android:name
ADDED from AndroidManifest.xml:58:13
activity#com.odoo.core.account.OdooAccountQuickManage
ADDED from AndroidManifest.xml:60:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:61:13
android:theme
ADDED from AndroidManifest.xml:63:13
android:name
ADDED from AndroidManifest.xml:62:13
activity#com.odoo.core.account.About
ADDED from AndroidManifest.xml:64:9
android:name
ADDED from AndroidManifest.xml:64:19
activity#com.odoo.core.account.Profile
ADDED from AndroidManifest.xml:65:9
android:name
ADDED from AndroidManifest.xml:65:19
receiver#com.odoo.core.utils.reminder.ReminderReceiver
ADDED from AndroidManifest.xml:68:9
android:name
ADDED from AndroidManifest.xml:68:19
receiver#com.odoo.core.utils.reminder.ReminderActionReceiver
ADDED from AndroidManifest.xml:69:9
android:name
ADDED from AndroidManifest.xml:69:19
receiver#com.odoo.news.OdooNewsReceiver
ADDED from AndroidManifest.xml:70:9
android:name
ADDED from AndroidManifest.xml:70:19
intent-filter#odoo.Odoo.ACTION_ODOO_UPDATES
ADDED from AndroidManifest.xml:71:13
action#odoo.Odoo.ACTION_ODOO_UPDATES
ADDED from AndroidManifest.xml:72:17
android:name
ADDED from AndroidManifest.xml:72:25
receiver#com.odoo.server.notifications.OdooServerNotificationReceiver
ADDED from AndroidManifest.xml:76:9
android:name
ADDED from AndroidManifest.xml:76:19
intent-filter#com.odoo.odoo.mobile.SERVER_NOTIFICATION
ADDED from AndroidManifest.xml:77:13
action#com.odoo.odoo.mobile.SERVER_NOTIFICATION
ADDED from AndroidManifest.xml:78:17
android:name
ADDED from AndroidManifest.xml:78:25
service#com.odoo.core.auth.OdooAuthService
ADDED from AndroidManifest.xml:82:9
android:name
ADDED from AndroidManifest.xml:82:18
intent-filter#android.accounts.AccountAuthenticator
ADDED from AndroidManifest.xml:83:13
action#android.accounts.AccountAuthenticator
ADDED from AndroidManifest.xml:84:17
android:name
ADDED from AndroidManifest.xml:84:25
meta-data#android.accounts.AccountAuthenticator
ADDED from AndroidManifest.xml:87:13
android:resource
ADDED from AndroidManifest.xml:89:17
android:name
ADDED from AndroidManifest.xml:88:17
provider#com.odoo.core.orm.provider.BaseModelProvider
ADDED from AndroidManifest.xml:92:9
android:multiprocess
ADDED from AndroidManifest.xml:95:13
android:authorities
ADDED from AndroidManifest.xml:94:13
android:name
ADDED from AndroidManifest.xml:93:13
provider#com.odoo.base.addons.ir.providers.IrModelProvider
ADDED from AndroidManifest.xml:96:9
android:multiprocess
ADDED from AndroidManifest.xml:99:13
android:authorities
ADDED from AndroidManifest.xml:98:13
android:name
ADDED from AndroidManifest.xml:97:13
provider#com.odoo.addons.customers.providers.CustomersSyncProvider
ADDED from AndroidManifest.xml:102:9
android:label
ADDED from AndroidManifest.xml:105:13
android:multiprocess
ADDED from AndroidManifest.xml:106:13
android:authorities
ADDED from AndroidManifest.xml:104:13
android:name
ADDED from AndroidManifest.xml:103:13
service#com.odoo.addons.customers.services.CustomerSyncService
ADDED from AndroidManifest.xml:108:9
android:process
ADDED from AndroidManifest.xml:111:13
android:exported
ADDED from AndroidManifest.xml:110:13
android:name
ADDED from AndroidManifest.xml:109:13
intent-filter#android.content.SyncAdapter
ADDED from AndroidManifest.xml:112:13
action#android.content.SyncAdapter
ADDED from AndroidManifest.xml:113:17
android:name
ADDED from AndroidManifest.xml:113:25
meta-data#android.content.SyncAdapter
ADDED from AndroidManifest.xml:116:13
android:resource
ADDED from AndroidManifest.xml:118:17
android:name
ADDED from AndroidManifest.xml:117:17
provider#com.odoo.addons.calendar.providers.CalendarSyncProvider
ADDED from AndroidManifest.xml:121:9
android:label
ADDED from AndroidManifest.xml:124:13
android:multiprocess
ADDED from AndroidManifest.xml:125:13
android:authorities
ADDED from AndroidManifest.xml:123:13
android:name
ADDED from AndroidManifest.xml:122:13
service#com.odoo.addons.calendar.services.CalendarSyncService
ADDED from AndroidManifest.xml:127:9
android:process
ADDED from AndroidManifest.xml:130:13
android:exported
ADDED from AndroidManifest.xml:129:13
android:name
ADDED from AndroidManifest.xml:128:13
provider#com.odoo.addons.crm.providers.CRMLeadProvider
ADDED from AndroidManifest.xml:140:9
android:label
ADDED from AndroidManifest.xml:143:13
android:multiprocess
ADDED from AndroidManifest.xml:144:13
android:authorities
ADDED from AndroidManifest.xml:142:13
android:name
ADDED from AndroidManifest.xml:141:13
service#com.odoo.addons.crm.services.CRMLeadSyncService
ADDED from AndroidManifest.xml:146:9
android:process
ADDED from AndroidManifest.xml:149:13
android:exported
ADDED from AndroidManifest.xml:148:13
android:name
ADDED from AndroidManifest.xml:147:13
provider#com.odoo.addons.sale.providers.SaleOrderProvider
ADDED from AndroidManifest.xml:159:9
android:label
ADDED from AndroidManifest.xml:162:13
android:multiprocess
ADDED from AndroidManifest.xml:163:13
android:authorities
ADDED from AndroidManifest.xml:161:13
android:name
ADDED from AndroidManifest.xml:160:13
service#com.odoo.addons.sale.services.SaleOrderSyncService
ADDED from AndroidManifest.xml:165:9
android:process
ADDED from AndroidManifest.xml:168:13
android:exported
ADDED from AndroidManifest.xml:167:13
android:name
ADDED from AndroidManifest.xml:166:13
provider#com.odoo.addons.phonecall.providers.PhoneCallProvider
ADDED from AndroidManifest.xml:178:9
android:label
ADDED from AndroidManifest.xml:181:13
android:multiprocess
ADDED from AndroidManifest.xml:182:13
android:authorities
ADDED from AndroidManifest.xml:180:13
android:name
ADDED from AndroidManifest.xml:179:13
service#com.odoo.addons.phonecall.services.PhoneCallSyncService
ADDED from AndroidManifest.xml:184:9
android:process
ADDED from AndroidManifest.xml:187:13
android:exported
ADDED from AndroidManifest.xml:186:13
android:name
ADDED from AndroidManifest.xml:185:13
activity#com.odoo.addons.calendar.EventDetail
ADDED from AndroidManifest.xml:197:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:199:13
android:name
ADDED from AndroidManifest.xml:198:13
activity#com.odoo.addons.customers.CustomerDetails
ADDED from AndroidManifest.xml:200:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:202:13
android:name
ADDED from AndroidManifest.xml:201:13
activity#com.odoo.addons.crm.CRMDetail
ADDED from AndroidManifest.xml:203:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:205:13
android:name
ADDED from AndroidManifest.xml:204:13
activity#com.odoo.addons.crm.ConvertToOpportunityWizard
ADDED from AndroidManifest.xml:206:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:209:13
android:theme
ADDED from AndroidManifest.xml:208:13
android:name
ADDED from AndroidManifest.xml:207:13
activity#com.odoo.addons.crm.ConvertToQuotation
ADDED from AndroidManifest.xml:210:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:213:13
android:theme
ADDED from AndroidManifest.xml:212:13
android:name
ADDED from AndroidManifest.xml:211:13
activity#com.odoo.addons.phonecall.PhoneCallDetail
ADDED from AndroidManifest.xml:214:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:216:13
android:name
ADDED from AndroidManifest.xml:215:13
activity#com.odoo.addons.sale.SalesDetail
ADDED from AndroidManifest.xml:217:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:220:13
android:screenOrientation
ADDED from AndroidManifest.xml:219:13
android:name
ADDED from AndroidManifest.xml:218:13
receiver#com.odoo.addons.phonecall.features.receivers.PhoneStateReceiver
ADDED from AndroidManifest.xml:222:9
android:name
ADDED from AndroidManifest.xml:222:19
intent-filter#android.intent.action.PHONE_STATE
ADDED from AndroidManifest.xml:223:13
action#android.intent.action.PHONE_STATE
ADDED from AndroidManifest.xml:224:17
android:name
ADDED from AndroidManifest.xml:224:25
intent-filter#android.intent.action.NEW_OUTGOING_CALL
ADDED from AndroidManifest.xml:226:13
action#android.intent.action.NEW_OUTGOING_CALL
ADDED from AndroidManifest.xml:227:17
android:name
ADDED from AndroidManifest.xml:227:25
activity#com.odoo.addons.sale.AddProductLineWizard
ADDED from AndroidManifest.xml:231:9
android:windowSoftInputMode
ADDED from AndroidManifest.xml:233:13
android:name
ADDED from AndroidManifest.xml:232:13
uses-sdk
INJECTED from AndroidManifest.xml:0:0 reason: use-sdk injection requested
MERGED from com.android.support:appcompat-v7:22.2.0:20:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.android.support:cardview-v7:22.0.0:20:5
MERGED from com.google.android.gms:play-services:7.5.0:18:5
MERGED from com.google.android.gms:play-services-ads:7.5.0:23:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-analytics:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-appindexing:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-appinvite:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-appstate:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-cast:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.android.support:mediarouter-v7:22.0.0:20:5
MERGED from com.android.support:appcompat-v7:22.2.0:20:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-drive:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-fitness:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-location:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:28:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-games:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-drive:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-gcm:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-identity:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-location:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:28:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:28:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-nearby:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-panorama:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-plus:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-safetynet:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-wallet:7.5.0:19:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-identity:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:28:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from com.google.android.gms:play-services-wearable:7.5.0:18:5
MERGED from com.google.android.gms:play-services-base:7.5.0:18:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from master-crm:intro-slider-lib:unspecified:7:5
MERGED from com.android.support:support-v4:22.2.0:20:5
MERGED from master-crm:parallax-effect-lib:unspecified:7:5
MERGED from master-crm:odoo-rpc-v2:unspecified:7:5
MERGED from master-crm:calendar-lib:unspecified:7:5
MERGED from master-crm:bottom-sheet-lib:unspecified:7:5
MERGED from master-crm:snackbar-lib:unspecified:7:5
android:targetSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:minSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
activity#com.google.android.gms.ads.AdActivity
ADDED from com.google.android.gms:play-services-ads:7.5.0:26:9
android:configChanges
ADDED from com.google.android.gms:play-services-ads:7.5.0:28:13
android:theme
ADDED from com.google.android.gms:play-services-ads:7.5.0:29:13
android:name
ADDED from com.google.android.gms:play-services-ads:7.5.0:27:13
activity#com.google.android.gms.ads.purchase.InAppPurchaseActivity
ADDED from com.google.android.gms:play-services-ads:7.5.0:30:9
android:theme
ADDED from com.google.android.gms:play-services-ads:7.5.0:31:13
android:name
ADDED from com.google.android.gms:play-services-ads:7.5.0:30:19
meta-data#com.google.android.gms.version
ADDED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
MERGED from com.google.android.gms:play-services-base:7.5.0:21:9
android:name
ADDED from com.google.android.gms:play-services-base:7.5.0:22:13
android:value
ADDED from com.google.android.gms:play-services-base:7.5.0:23:13
uses-permission#android.permission.ACCESS_COARSE_LOCATION
ADDED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:23:5
android:name
ADDED from com.google.android.gms:play-services-maps:7.5.0:23:22
uses-feature#0x00020000
ADDED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:24:5
android:required
ADDED from com.google.android.gms:play-services-maps:7.5.0:26:8
android:glEsVersion
ADDED from com.google.android.gms:play-services-maps:7.5.0:25:8
meta-data#com.google.android.gms.wallet.api.enabled
ADDED from com.google.android.gms:play-services-wallet:7.5.0:25:9
android:name
ADDED from com.google.android.gms:play-services-wallet:7.5.0:26:13
android:value
ADDED from com.google.android.gms:play-services-wallet:7.5.0:27:13
receiver#com.google.android.gms.wallet.EnableWalletOptimizationReceiver
ADDED from com.google.android.gms:play-services-wallet:7.5.0:28:9
android:exported
ADDED from com.google.android.gms:play-services-wallet:7.5.0:30:13
android:name
ADDED from com.google.android.gms:play-services-wallet:7.5.0:29:13
intent-filter#com.google.android.gms.wallet.ENABLE_WALLET_OPTIMIZATION
ADDED from com.google.android.gms:play-services-wallet:7.5.0:31:13
action#com.google.android.gms.wallet.ENABLE_WALLET_OPTIMIZATION
ADDED from com.google.android.gms:play-services-wallet:7.5.0:32:17
android:name
ADDED from com.google.android.gms:play-services-wallet:7.5.0:32:25
uses-permission#android.permission.CAMERA
ADDED from master-crm:odoo-rpc-v2:unspecified:18:5
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:18:22
receiver#odoo.kernel.handler.ActionHandler
ADDED from master-crm:odoo-rpc-v2:unspecified:24:9
android:permission
ADDED from master-crm:odoo-rpc-v2:unspecified:26:13
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:25:13
intent-filter#com.google.android.c2dm.intent.RECEIVE+com.google.android.c2dm.intent.REGISTRATION
ADDED from master-crm:odoo-rpc-v2:unspecified:27:13
action#com.google.android.c2dm.intent.RECEIVE
ADDED from master-crm:odoo-rpc-v2:unspecified:28:17
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:28:25
action#com.google.android.c2dm.intent.REGISTRATION
ADDED from master-crm:odoo-rpc-v2:unspecified:29:17
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:29:25
service#odoo.kernel.handler.ActionHandlerService
ADDED from master-crm:odoo-rpc-v2:unspecified:33:9
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:33:18
activity#odoo.zxing.handler.OdooMobileQRReader
ADDED from master-crm:odoo-rpc-v2:unspecified:35:9
android:screenOrientation
ADDED from master-crm:odoo-rpc-v2:unspecified:37:13
android:name
ADDED from master-crm:odoo-rpc-v2:unspecified:36:13
================================================
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/dpr/eclipse-adt/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 *;
#}
================================================
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.odoo">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<permission
android:name="com.odoo.crm.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<application
android:name="com.odoo.App"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme">
<activity
android:name="com.odoo.core.account.OdooLogin"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.odoo.core.account.ManageAccounts" />
<activity android:name="com.odoo.OdooActivity" />
<activity android:name="odoo.controls.SearchableItemActivity" />
<activity android:name="com.odoo.SettingsActivity" />
<activity
android:name="com.odoo.core.account.AppIntro"
android:screenOrientation="portrait" />
<activity
android:name=".base.addons.mail.widget.MailDetailDialog"
android:theme="@style/Theme.AppCompat.Light.Dialog" />
<activity
android:name=".base.addons.mail.widget.MailChatterCompose"
android:theme="@style/Theme.AppCompat.Light.Dialog" />
<activity
android:windowSoftInputMode="adjustPan"
android:name="com.odoo.core.account.OdooAccountQuickManage"
android:theme="@style/Theme.AppCompat.Light.Dialog" />
<activity android:name="com.odoo.core.account.About" />
<activity android:name="com.odoo.core.account.Profile" />
<!-- Reminder Receivers// -->
<receiver android:name="com.odoo.core.utils.reminder.ReminderReceiver" />
<receiver android:name="com.odoo.core.utils.reminder.ReminderActionReceiver" />
<receiver android:name=".news.OdooNewsReceiver">
<intent-filter>
<action android:name="odoo.Odoo.ACTION_ODOO_UPDATES" />
</intent-filter>
</receiver>
<receiver android:name=".server.notifications.OdooServerNotificationReceiver">
<intent-filter>
<action android:name="com.odoo.odoo.mobile.SERVER_NOTIFICATION" />
</intent-filter>
</receiver>
<service android:name="com.odoo.core.auth.OdooAuthService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
<provider
android:name="com.odoo.core.orm.provider.BaseModelProvider"
android:authorities="com.odoo.crm.core.provider.content"
android:multiprocess="true" />
<provider
android:name="com.odoo.base.addons.ir.providers.IrModelProvider"
android:authorities="com.odoo.crm.core.provider.content.sync.ir_model"
android:multiprocess="true" />
<!-- Sync Provider & Service // -->
<provider
android:name="com.odoo.addons.customers.providers.CustomersSyncProvider"
android:authorities="com.odoo.core.crm.provider.content.sync.res_partner"
android:label="@string/sync_label_customers"
android:multiprocess="true" />
<service
android:name="com.odoo.addons.customers.services.CustomerSyncService"
android:exported="true"
android:process=":sync_customer">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/customer_sync_adapter" />
</service>
<provider
android:name="com.odoo.addons.calendar.providers.CalendarSyncProvider"
android:authorities="com.odoo.core.crm.provider.content.sync.calendar_event"
android:label="@string/sync_label_calendar"
android:multiprocess="true" />
<service
android:name="com.odoo.addons.calendar.services.CalendarSyncService"
android:exported="true"
android:process=":sync_agenda">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/calendar_sync_adapter" />
</service>
<provider
android:name="com.odoo.addons.crm.providers.CRMLeadProvider"
android:authorities="com.odoo.core.crm.provider.content.sync.crm_lead"
android:label="@string/sync_label_lead_opportunities"
android:multiprocess="true" />
<service
android:name="com.odoo.addons.crm.services.CRMLeadSyncService"
android:exported="true"
android:process=":sync_leads">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/crm_sync_adapter" />
</service>
<provider
android:name="com.odoo.addons.sale.providers.SaleOrderProvider"
android:authorities="com.odoo.core.crm.provider.content.sync.sale_order"
android:label="@string/sync_label_quotation_sales_orders"
android:multiprocess="true" />
<service
android:name="com.odoo.addons.sale.services.SaleOrderSyncService"
android:exported="true"
android:process=":sync_sale_orders">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/sale_sync_adapter" />
</service>
<provider
android:name="com.odoo.addons.phonecall.providers.PhoneCallProvider"
android:authorities="com.odoo.core.crm.provider.content.sync.crm_phonecall"
android:label="@string/sync_label_phonecalls"
android:multiprocess="true" />
<service
android:name="com.odoo.addons.phonecall.services.PhoneCallSyncService"
android:exported="true"
android:process=":sync_phone_calls">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/phonecall_sync_adapter" />
</service>
<activity
android:name="com.odoo.addons.calendar.EventDetail"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.customers.CustomerDetails"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.crm.CRMDetail"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.crm.ConvertToOpportunityWizard"
android:theme="@style/Theme.AppCompat.Light.Dialog"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.crm.ConvertToQuotation"
android:theme="@style/Theme.AppCompat.Light.Dialog"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.phonecall.PhoneCallDetail"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.odoo.addons.sale.SalesDetail"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
<!-- Phone state receiver// -->
<receiver android:name="com.odoo.addons.phonecall.features.receivers.PhoneStateReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<activity
android:name="com.odoo.addons.sale.AddProductLineWizard"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>
================================================
FILE: app/src/main/java/com/odoo/App.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 17/12/14 6:06 PM
*/
package com.odoo;
import android.app.ActivityManager;
import android.app.Application;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.odoo.core.support.OUser;
import java.util.HashMap;
import java.util.List;
import odoo.Odoo;
public class App extends Application {
public static final String TAG = App.class.getSimpleName();
private static HashMap<String, Odoo> mOdooInstances = new HashMap<>();
@Override
public void onCreate() {
super.onCreate();
}
public Odoo getOdoo(OUser user) {
if (mOdooInstances.containsKey(user.getAndroidName())) {
return mOdooInstances.get(user.getAndroidName());
}
return null;
}
public void setOdoo(Odoo odoo, OUser user) {
if (user != null)
mOdooInstances.put(user.getAndroidName(), odoo);
}
/**
* Checks for network availability
*
* @return true, if network available
*/
public boolean inNetwork() {
boolean isConnected = false;
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo nInfo = manager.getActiveNetworkInfo();
if (nInfo != null && nInfo.isConnectedOrConnecting()) {
isConnected = true;
}
return isConnected;
}
/**
* Checks for installed application
*
* @param appPackage
* @return true, if application installed on device
*/
public boolean appInstalled(String appPackage) {
boolean mInstalled = false;
try {
PackageManager mPackage = getPackageManager();
mPackage.getPackageInfo(appPackage, PackageManager.GET_ACTIVITIES);
mInstalled = true;
} catch (Exception e) {
e.printStackTrace();
}
return mInstalled;
}
/**
* Check for app is on top of screen
*
* @return true, if application is running on top
*/
public boolean meOnTop() {
boolean meOnTop = false;
ActivityManager aManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = aManager.getRunningTasks(1);
ComponentName componentName = taskInfo.get(0).topActivity;
if (componentName.getPackageName().equalsIgnoreCase(getPackageName())) {
meOnTop = true;
}
return meOnTop;
}
}
================================================
FILE: app/src/main/java/com/odoo/OdooActivity.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 18/12/14 5:25 PM
*/
package com.odoo;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.odoo.core.account.AppIntro;
import com.odoo.core.account.ManageAccounts;
import com.odoo.core.account.OdooLogin;
import com.odoo.core.account.OdooUserAskPassword;
import com.odoo.core.auth.OdooAccountManager;
import com.odoo.core.auth.OdooAuthenticator;
import com.odoo.core.orm.OModel;
import com.odoo.core.support.OUser;
import com.odoo.core.support.addons.fragment.IBaseFragment;
import com.odoo.core.support.drawer.ODrawerItem;
import com.odoo.core.support.sync.SyncUtils;
import com.odoo.core.utils.BitmapUtils;
import com.odoo.core.utils.OActionBarUtils;
import com.odoo.core.utils.OAlert;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.OFragmentUtils;
import com.odoo.core.utils.OPreferenceManager;
import com.odoo.core.utils.OResource;
import com.odoo.core.utils.drawer.DrawerUtils;
import com.odoo.core.utils.sys.IOnActivityResultListener;
import com.odoo.core.utils.sys.IOnBackPressListener;
import com.odoo.R;
import java.util.List;
public class OdooActivity extends ActionBarActivity {
public static final String TAG = OdooActivity.class.getSimpleName();
public static final Integer DRAWER_ITEM_LAUNCH_DELAY = 300;
public static final Integer DRAWER_ACCOUNT_BOX_ANIMATION_DURATION = 250;
public static final String KEY_ACCOUNT_REQUEST = "key_account_request";
public static final String KEY_NEW_USER_NAME = "key_new_account_username";
public static final String KEY_CURRENT_DRAWER_ITEM = "key_drawer_item_index";
public static final String KEY_APP_TITLE = "key_app_title";
public static final String KEY_HAS_ACTIONBAR_SPINNER = "key_has_actionbar_spinner";
public static final Integer REQUEST_ACCOUNT_CREATE = 1101;
public static final Integer REQUEST_ACCOUNTS_MANAGE = 1102;
public static final String KEY_FRESH_LOGIN = "key_fresh_login";
private DrawerLayout mDrawerLayout = null;
private ActionBarDrawerToggle mDrawerToggle = null;
private IOnBackPressListener backPressListener = null;
private IOnActivityResultListener mIOnActivityResultListener = null;
//Drawer Containers
private LinearLayout mDrawerAccountContainer = null;
private LinearLayout mDrawerItemContainer = null;
private Boolean mAccountBoxExpanded = false;
private Bundle mSavedInstanceState = null;
private Spinner spinner_nav = null;
private Integer mDrawerSelectedIndex = -1;
private Boolean mHasActionBarSpinner = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "OdooActivity->onCreate");
mSavedInstanceState = savedInstanceState;
OPreferenceManager preferenceManager = new OPreferenceManager(this);
if (!preferenceManager.getBoolean(KEY_FRESH_LOGIN, false)) {
preferenceManager.setBoolean(KEY_FRESH_LOGIN, true);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(OdooActivity.this, AppIntro.class));
}
}, 1000);
}
setContentView(R.layout.odoo_activity);
OActionBarUtils.setActionBar(this, true);
setupDrawer();
}
// Creating drawer
private void setupDrawer() {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
setTitle(getResources().getString(R.string.app_name));
invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
setTitle(R.string.app_name);
}
@Override
public void onDrawerStateChanged(int newState) {
super.onDrawerStateChanged(newState);
invalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, Gravity.START);
mDrawerToggle.syncState();
setupAccountBox();
setupDrawerBox();
}
private void setupDrawerBox() {
mDrawerItemContainer = (LinearLayout) findViewById(R.id.drawerItemList);
mDrawerItemContainer.removeAllViews();
List<ODrawerItem> items = DrawerUtils.getDrawerItems(this);
for (ODrawerItem item : items) {
View view = LayoutInflater.from(this).
inflate((item.isGroupTitle()) ? R.layout.base_drawer_group_layout :
R.layout.base_drawer_menu_item, mDrawerItemContainer, false);
view.setTag(item);
if (!item.isGroupTitle()) {
view.setOnClickListener(drawerItemClick);
}
mDrawerItemContainer.addView(DrawerUtils.fillDrawerItemValue(view, item));
}
}
private View.OnClickListener drawerItemClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
int index = mDrawerItemContainer.indexOfChild(v);
if (mDrawerSelectedIndex != index) {
ODrawerItem item = (ODrawerItem) v.getTag();
if (item.getInstance() instanceof Fragment) {
focusOnDrawerItem(index);
setTitle(item.getTitle());
}
loadDrawerItemInstance(item.getInstance(), item.getExtra());
} else {
closeDrawer();
}
}
};
public void closeDrawer() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mDrawerLayout.closeDrawer(Gravity.START);
}
}, DRAWER_ITEM_LAUNCH_DELAY);
}
/**
* Loads fragment or start intent
*
* @param instance, instance of fragment or intent
*/
private void loadDrawerItemInstance(Object instance, Bundle extra) {
if (instance != null) {
if (instance instanceof Intent) {
Log.i(TAG, "Loading intent: " + instance.getClass().getCanonicalName());
startActivity((Intent) instance);
}
if (instance instanceof Class<?>) {
Class<?> cls = (Class<?>) instance;
Intent intent = null;
if (cls.getSuperclass().isAssignableFrom(Activity.class)) {
intent = new Intent(this, cls);
}
if (cls.getSuperclass().isAssignableFrom(ActionBarActivity.class)) {
intent = new Intent(this, cls);
}
if (intent != null) {
if (extra != null)
intent.putExtras(extra);
loadDrawerItemInstance(intent, null);
return;
}
}
if (instance instanceof Fragment) {
Log.i(TAG, "Loading fragment: " + instance.getClass().getCanonicalName());
OFragmentUtils.get(this, mSavedInstanceState).startFragment((Fragment) instance, false, extra);
}
}
closeDrawer();
}
public void loadFragment(Fragment fragment, Boolean addToBackState, Bundle extra) {
OFragmentUtils.get(this, null).startFragment(fragment, addToBackState, extra);
}
private void setupAccountBox() {
mDrawerAccountContainer = (LinearLayout) findViewById(R.id.accountList);
View chosenAccountView = findViewById(R.id.drawerAccountView);
OUser currentUser = OUser.current(this);
if (currentUser == null) {
chosenAccountView.setVisibility(View.GONE);
mDrawerAccountContainer.setVisibility(View.GONE);
return;
} else {
chosenAccountView.setVisibility(View.VISIBLE);
mDrawerAccountContainer.setVisibility(View.INVISIBLE);
}
ImageView avatar = (ImageView) chosenAccountView.findViewById(R.id.profile_image);
TextView name = (TextView) chosenAccountView.findViewById(R.id.profile_name_text);
TextView url = (TextView) chosenAccountView.findViewById(R.id.profile_url_text);
name.setText(currentUser.getName());
url.setText((currentUser.isOAauthLogin()) ? currentUser.getInstanceUrl() : currentUser.getHost());
if (!currentUser.getAvatar().equals("false")) {
Bitmap bitmap = BitmapUtils.getBitmapImage(this, currentUser.getAvatar());
if (bitmap != null)
avatar.setImageBitmap(bitmap);
}
// Setting Accounts
List<OUser> accounts = OdooAccountManager.getAllAccounts(this);
if (accounts.size() > 0) {
chosenAccountView.setEnabled(true);
ImageView boxIndicator = (ImageView) findViewById(R.id.expand_account_box_indicator);
boxIndicator.setVisibility(View.VISIBLE);
chosenAccountView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAccountBoxExpanded = !mAccountBoxExpanded;
accountBoxToggle();
}
});
populateAccountList(currentUser, accounts);
}
}
private void accountBoxToggle() {
ImageView boxIndicator = (ImageView) findViewById(R.id.expand_account_box_indicator);
boxIndicator.setImageResource(mAccountBoxExpanded ? R.drawable.ic_drawer_accounts_collapse
: R.drawable.ic_drawer_accounts_expand);
int hideTranslateY = -mDrawerAccountContainer.getHeight() / 4;
if (mAccountBoxExpanded && mDrawerAccountContainer.getTranslationY() == 0) {
// initial setup
mDrawerAccountContainer.setAlpha(0);
mDrawerAccountContainer.setTranslationY(hideTranslateY);
}
AnimatorSet set = new AnimatorSet();
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mDrawerItemContainer
.setVisibility(mAccountBoxExpanded ? View.INVISIBLE
: View.VISIBLE);
mDrawerAccountContainer
.setVisibility(mAccountBoxExpanded ? View.VISIBLE
: View.INVISIBLE);
}
@Override
public void onAnimationCancel(Animator animation) {
onAnimationEnd(animation);
}
});
if (mAccountBoxExpanded) {
mDrawerAccountContainer.setVisibility(View.VISIBLE);
AnimatorSet subSet = new AnimatorSet();
subSet.playTogether(
ObjectAnimator
.ofFloat(mDrawerAccountContainer, View.ALPHA, 1)
.setDuration(DRAWER_ACCOUNT_BOX_ANIMATION_DURATION),
ObjectAnimator.ofFloat(mDrawerAccountContainer,
View.TRANSLATION_Y, 0).setDuration(
DRAWER_ACCOUNT_BOX_ANIMATION_DURATION));
set.playSequentially(
ObjectAnimator.ofFloat(mDrawerItemContainer,
View.ALPHA, 0).setDuration(
DRAWER_ACCOUNT_BOX_ANIMATION_DURATION), subSet);
set.start();
} else {
mDrawerItemContainer.setVisibility(View.VISIBLE);
AnimatorSet subSet = new AnimatorSet();
subSet.playTogether(
ObjectAnimator
.ofFloat(mDrawerAccountContainer, View.ALPHA, 0)
.setDuration(DRAWER_ACCOUNT_BOX_ANIMATION_DURATION),
ObjectAnimator.ofFloat(mDrawerAccountContainer,
View.TRANSLATION_Y, hideTranslateY).setDuration(
DRAWER_ACCOUNT_BOX_ANIMATION_DURATION));
set.playSequentially(
subSet,
ObjectAnimator.ofFloat(mDrawerItemContainer,
View.ALPHA, 1).setDuration(
DRAWER_ACCOUNT_BOX_ANIMATION_DURATION));
set.start();
}
set.start();
}
private void populateAccountList(OUser me, List<OUser> accounts) {
mDrawerAccountContainer.removeAllViews();
for (final OUser user : accounts) {
if (!user.getAndroidName().equals(me.getAndroidName())) {
View view = LayoutInflater.from(this).inflate(R.layout.base_drawer_account_item, mDrawerAccountContainer, false);
ImageView avatar = (ImageView) view.findViewById(R.id.profile_image);
if (!user.getAvatar().equals("false")) {
Bitmap img = BitmapUtils.getBitmapImage(this, user.getAvatar());
if (img != null)
avatar.setImageBitmap(img);
}
OControls.setText(view, R.id.profile_name_text, user.getName());
OControls.setText(view, R.id.profile_url_text, (user.isOAauthLogin()) ? user.getInstanceUrl() : user.getHost());
// Setting login event for other account
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OdooUserAskPassword.get(OdooActivity.this, user)
.setOnUserPasswordValidateListener(
new OdooUserAskPassword.OnUserPasswordValidateListener() {
@Override
public void onSuccess() {
// Logging in to other account
OdooAccountManager.login(OdooActivity.this,
user.getAndroidName());
OModel.sqLite = null;
mAccountBoxExpanded = false;
accountBoxToggle();
mDrawerLayout.closeDrawer(Gravity.START);
// Restarting activity
restartActivity();
}
@Override
public void onCancel() {
}
@Override
public void onFail() {
OAlert.showError(OdooActivity.this,
OResource.string(OdooActivity.this,
R.string.error_invalid_password));
}
}).show();
}
});
mDrawerAccountContainer.addView(view);
}
}
accountListDefaultItems();
}
private void restartActivity() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(OdooActivity.this, OdooActivity.class);
finish();
startActivity(intent);
}
}, DRAWER_ITEM_LAUNCH_DELAY);
}
private void accountListDefaultItems() {
// Adding add account
View view = generateView(OResource.string(this, R.string.label_drawer_account_add_account),
R.drawable.ic_action_add);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent loginActivity = new Intent(OdooActivity.this, OdooLogin.class);
loginActivity.putExtra(OdooAuthenticator.KEY_NEW_ACCOUNT_REQUEST, true);
loginActivity.putExtra(KEY_ACCOUNT_REQUEST, true);
startActivityForResult(loginActivity, REQUEST_ACCOUNT_CREATE);
}
});
mDrawerAccountContainer.addView(view);
// Adding add account
view = generateView(OResource.string(this, R.string.label_drawer_account_manage_accounts),
R.drawable.ic_action_settings);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(OdooActivity.this, ManageAccounts.class),
REQUEST_ACCOUNTS_MANAGE);
}
});
mDrawerAccountContainer.addView(view);
}
private View generateView(String title, int res_id) {
View view = LayoutInflater.from(this).inflate(R.layout.base_drawer_account_item,
mDrawerAccountContainer, false);
OControls.setGone(view, R.id.profile_url_text);
ImageView icon = (ImageView) view.findViewById(R.id.profile_image);
icon.setImageResource(res_id);
icon.setColorFilter(OResource.color(this, R.color.body_text_2));
TextView name = (TextView) view.findViewById(R.id.profile_name_text);
name.setTypeface(name.getTypeface(), Typeface.BOLD);
name.setText(title);
return view;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (mDrawerToggle != null) {
mDrawerToggle.onConfigurationChanged(newConfig);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle != null && mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
if (backPressListener != null) {
if (backPressListener.onBackPressed()) {
super.onBackPressed();
}
} else
super.onBackPressed();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mIOnActivityResultListener != null) {
mIOnActivityResultListener.onOdooActivityResult(requestCode, resultCode, data);
}
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_ACCOUNT_CREATE) {
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(Gravity.START);
accountBoxToggle();
}
OdooAccountManager.login(this, data.getStringExtra(KEY_NEW_USER_NAME));
OModel.sqLite = null;
restartActivity();
}
if (requestCode == REQUEST_ACCOUNTS_MANAGE) {
startActivity(new Intent(this, OdooLogin.class));
finish();
}
}
}
/**
* Set system back button press listener
*
* @param listener
*/
public void setOnBackPressListener(IOnBackPressListener listener) {
backPressListener = listener;
}
public void setOnActivityResultListener(IOnActivityResultListener listener) {
mIOnActivityResultListener = listener;
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mSavedInstanceState = savedInstanceState;
if (savedInstanceState == null) {
// Loading Default Fragment (if any)
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
IBaseFragment fragment = DrawerUtils.getDefaultDrawerFragment();
if (fragment != null) {
ODrawerItem item = DrawerUtils.getStartableObject(OdooActivity.this, fragment);
setTitle(item.getTitle());
loadDrawerItemInstance(item.getInstance(), item.getExtra());
int selected_item = DrawerUtils.findItemIndex(item, mDrawerItemContainer);
if (selected_item > -1) {
focusOnDrawerItem(selected_item);
}
}
}
}, DRAWER_ITEM_LAUNCH_DELAY);
} else {
mHasActionBarSpinner = savedInstanceState.getBoolean(KEY_HAS_ACTIONBAR_SPINNER);
mDrawerSelectedIndex = savedInstanceState.getInt(KEY_CURRENT_DRAWER_ITEM);
setTitle(savedInstanceState.getString(KEY_APP_TITLE));
focusOnDrawerItem(mDrawerSelectedIndex);
}
}
private void focusOnDrawerItem(int index) {
mDrawerSelectedIndex = index;
for (int i = 0; i < mDrawerItemContainer.getChildCount(); i++) {
DrawerUtils.focusOnView(this, mDrawerItemContainer.getChildAt(i), i == index);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(KEY_CURRENT_DRAWER_ITEM, mDrawerSelectedIndex);
outState.putString(KEY_APP_TITLE, getTitle().toString());
outState.putBoolean(KEY_HAS_ACTIONBAR_SPINNER, mHasActionBarSpinner);
super.onSaveInstanceState(outState);
}
public SyncUtils sync() {
return SyncUtils.get(this);
}
/**
* Actionbar Spinner handler
*/
public void setHasActionBarSpinner(Boolean hasActionBarSpinner) {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
Spinner spinner = (Spinner) findViewById(R.id.spinner_nav);
if (hasActionBarSpinner) {
if (spinner != null)
spinner.setVisibility(View.VISIBLE);
actionBar.setDisplayShowTitleEnabled(false);
} else {
if (spinner != null)
spinner.setVisibility(View.GONE);
actionBar.setDisplayShowTitleEnabled(true);
}
mHasActionBarSpinner = hasActionBarSpinner;
}
}
public Spinner getActionBarSpinner() {
Spinner spinner = null;
if (mHasActionBarSpinner) {
spinner = (Spinner) findViewById(R.id.spinner_nav);
spinner.setAdapter(null);
}
return spinner;
}
public void refreshDrawer() {
setupDrawerBox();
}
}
================================================
FILE: app/src/main/java/com/odoo/SettingsActivity.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 11:32 AM
*/
package com.odoo;
import android.accounts.Account;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.SyncAdapterType;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.widget.Toast;
import com.odoo.core.account.About;
import com.odoo.core.account.OdooLogin;
import com.odoo.core.support.OUser;
import com.odoo.core.support.sync.SyncUtils;
import com.odoo.core.utils.OActionBarUtils;
import com.odoo.core.utils.OPreferenceManager;
import com.odoo.core.utils.OResource;
import java.util.ArrayList;
import java.util.List;
public class SettingsActivity extends ActionBarActivity {
public static final String TAG = SettingsActivity.class.getSimpleName();
public static final String ACTION_ABOUT = "com.odoo.ACTION_ABOUT";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_setting_activity);
OActionBarUtils.setActionBar(this, true);
ActionBar actionbar = getSupportActionBar();
actionbar.setHomeButtonEnabled(true);
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setTitle(R.string.title_application_settings);
}
@Override
public void startActivity(Intent intent) {
if (intent.getAction() != null
&& intent.getAction().equals(ACTION_ABOUT)) {
Intent about = new Intent(this, About.class);
super.startActivity(about);
return;
}
super.startActivity(intent);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
settingUpdated();
}
private void settingUpdated() {
OUser user = OUser.current(this);
if (user == null) {
Intent loginActivity = new Intent(this, OdooLogin.class);
loginActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(loginActivity);
finish();
} else {
Account mAccount = user.getAccount();
OPreferenceManager mPref = new OPreferenceManager(this);
int sync_interval = mPref.getInt("sync_interval", 1440);
List<String> default_authorities = new ArrayList<>();
default_authorities.add("com.android.calendar");
default_authorities.add("com.android.contacts");
SyncAdapterType[] list = ContentResolver.getSyncAdapterTypes();
for (SyncAdapterType lst : list) {
if (lst.authority.contains("com.odoo")
&& lst.authority.contains("providers")) {
default_authorities.add(lst.authority);
}
}
for (String authority : default_authorities) {
boolean isSyncActive = ContentResolver.getSyncAutomatically(
mAccount, authority);
if (isSyncActive) {
SyncUtils.get(this).setSyncPeriodic(authority, sync_interval, 60, 1);
}
}
Toast.makeText(this, OResource.string(this, R.string.toast_setting_saved),
Toast.LENGTH_LONG).show();
}
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/CalendarDashboard.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 10:34 AM
*/
package com.odoo.addons.calendar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SwipeRefreshLayout;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.odoo.R;
import com.odoo.addons.calendar.models.CalendarEvent;
import com.odoo.addons.calendar.utils.CalendarUtils;
import com.odoo.addons.calendar.utils.TodayIcon;
import com.odoo.addons.crm.CRMDetail;
import com.odoo.addons.crm.CRMLeads;
import com.odoo.addons.crm.ConvertToQuotation;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.addons.phonecall.PhoneCallDetail;
import com.odoo.addons.phonecall.models.CRMPhoneCalls;
import com.odoo.addons.sale.models.SaleOrder;
import com.odoo.base.addons.res.ResCurrency;
import com.odoo.base.addons.res.ResPartner;
import com.odoo.libs.calendar.SysCal;
import com.odoo.libs.calendar.view.OdooCalendar;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.support.addons.fragment.BaseFragment;
import com.odoo.core.support.addons.fragment.IOnSearchViewChangeListener;
import com.odoo.core.support.addons.fragment.ISyncStatusObserverListener;
import com.odoo.core.support.drawer.ODrawerItem;
import com.odoo.core.support.list.IOnItemClickListener;
import com.odoo.core.support.list.OCursorListAdapter;
import com.odoo.core.support.list.OListAdapter;
import com.odoo.core.support.sync.SyncUtils;
import com.odoo.core.utils.IntentUtils;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.OCursorUtils;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.OResource;
import com.odoo.core.utils.StringUtils;
import com.odoo.core.utils.dialog.OChoiceDialog;
import com.odoo.core.utils.sys.IOnActivityResultListener;
import com.odoo.core.utils.sys.IOnBackPressListener;
import com.odoo.widgets.bottomsheet.BottomSheet;
import com.odoo.widgets.bottomsheet.BottomSheetListeners;
import com.odoo.widgets.snackbar.SnackBar;
import com.odoo.widgets.snackbar.SnackbarBuilder;
import com.odoo.widgets.snackbar.listeners.EventListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class CalendarDashboard extends BaseFragment implements View.OnClickListener,
BottomSheetListeners.OnSheetItemClickListener, IOnBackPressListener,
OdooCalendar.OdooCalendarDateSelectListener, LoaderManager.LoaderCallbacks<Cursor>,
OCursorListAdapter.OnViewBindListener, SwipeRefreshLayout.OnRefreshListener,
ISyncStatusObserverListener, BottomSheetListeners.OnSheetActionClickListener,
BottomSheetListeners.OnSheetMenuCreateListener, EventListener,
IOnSearchViewChangeListener, IOnItemClickListener, OCursorListAdapter.OnViewCreateListener,
AdapterView.OnItemSelectedListener, IOnActivityResultListener, OCursorListAdapter.BeforeBindUpdateData {
public static final String TAG = CalendarDashboard.class.getSimpleName();
public static final String KEY = "key_calendar_dashboard";
public static final String KEY_DATE = "key_date";
public static final int REQUEST_CONVERT_TO_QUOTATION_WIZARD = 229;
private BottomSheet mSheet = null;
private OdooCalendar odooCalendar;
private View calendarView = null;
private ListView dashboardListView;
private View mView;
private String mFilterDate;
private OCursorListAdapter mAdapter;
private boolean syncRequested = false;
private String mFilter = null;
private String wonLost = "won";
private CRMLead crmLead;
private ODataRow convertRequestRecord;
private Spinner navSpinner;
private OListAdapter navSpinnerAdapter;
private FilterType mFilterType = FilterType.All;
private enum SheetType {
Event, PhoneCall, Opportunity
}
private enum FilterType {
All(R.string.label_all), Meetings(R.string.label_meetings),
Opportunities(R.string.label_opportunity), PhoneCalls(R.string.label_phone_calls);
int str_id = 0;
FilterType(int type) {
str_id = type;
}
public String getString(Context context) {
return OResource.string(context, str_id);
}
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.calendar_dashboard, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mView = view;
setHasFloatingButton(view, R.id.fabButton, null, this);
parent().setOnBackPressListener(this);
parent().setHasActionBarSpinner(true);
parent().setOnActivityResultListener(this);
navSpinner = parent().getActionBarSpinner();
initActionSpinner();
odooCalendar = (OdooCalendar) view.findViewById(R.id.dashboard_calendar);
crmLead = new CRMLead(getActivity(), null);
odooCalendar.setOdooCalendarDateSelectListener(this);
}
private void initActionSpinner() {
List<Object> spinnerItems = new ArrayList<>();
ODataRow row = new ODataRow();
row.put("key", FilterType.All.toString());
row.put("name", FilterType.All.getString(getActivity()));
spinnerItems.add(row);
row = new ODataRow();
row.put("key", FilterType.Meetings.toString());
row.put("name", FilterType.Meetings.getString(getActivity()));
spinnerItems.add(row);
row = new ODataRow();
row.put("key", FilterType.Opportunities.toString());
row.put("name", FilterType.Opportunities.getString(getActivity()));
spinnerItems.add(row);
row = new ODataRow();
row.put("key", FilterType.PhoneCalls.toString());
row.put("name", FilterType.PhoneCalls.getString(getActivity()));
spinnerItems.add(row);
navSpinnerAdapter = new OListAdapter(getActivity(), R.layout.base_simple_list_item_1, spinnerItems) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.base_simple_list_item_1_selected
, parent, false);
}
return getSpinnerView(getItem(position), position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getActivity()).inflate(getResource(), parent, false);
}
return getSpinnerView(getItem(position), position, convertView, parent);
}
};
navSpinner.setAdapter(navSpinnerAdapter);
navSpinner.setOnItemSelectedListener(this);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ODataRow row = (ODataRow) navSpinnerAdapter.getItem(position);
mFilterType = FilterType.valueOf(row.getString("key"));
if (mFilterDate != null && getActivity() != null)
getLoaderManager().restartLoader(0, null, this);
}
private View getSpinnerView(Object row, int pos, View view, ViewGroup parent) {
ODataRow r = (ODataRow) row;
OControls.setText(view, android.R.id.text1, r.getString("name"));
return view;
}
@Override
public List<OdooCalendar.DateDataObject> weekDataInfo(
List<SysCal.DateInfo> week_dates) {
List<OdooCalendar.DateDataObject> items = new ArrayList<>();
CalendarEvent event = (CalendarEvent) db();
CRMPhoneCalls calls = new CRMPhoneCalls(getActivity(), event.getUser());
CRMLead lead = new CRMLead(getActivity(), event.getUser());
for (SysCal.DateInfo date : week_dates) {
String date_str = date.getDateString();
int total = 0;
switch (mFilterType) {
case All:
case Meetings:
// Checking for events
total += event.countGroupBy("date_start", "date(date_start)"
, "(date(date_start) <= ? and date(date_end) >= ? )",
new String[]{date_str, date_str}).getInt("total");
if (mFilterType != FilterType.All)
break;
case PhoneCalls:
// Checking for phone calls
total += calls.countGroupBy("date", "date(date)",
"date(date) >= ? and date(date) <= ? and (state = ? or state = ?)",
new String[]{date_str, date_str, "open", "pending"})
.getInt("total");
if (mFilterType != FilterType.All)
break;
case Opportunities:
// Leads
total += lead.countGroupBy("date_deadline", "date(date_deadline)",
"(date(date_deadline) >= ? and date(date_deadline) <= ? or " +
"date(date_action) >= ? and date(date_action) <= ?) and type = ?",
new String[]{date_str, date_str, date_str, date_str, "opportunity"}).getInt("total");
if (mFilterType != FilterType.All)
break;
}
items.add(new OdooCalendar.DateDataObject(date_str, (total > 0)));
}
return items;
}
@Override
public View getEventsView(ViewGroup parent, SysCal.DateInfo date) {
calendarView = LayoutInflater.from(getActivity()).inflate(
R.layout.calendar_dashboard_items, parent, false);
calendarView.findViewById(R.id.dashboard_no_item_view)
.setOnClickListener(this);
dashboardListView = (ListView) calendarView
.findViewById(R.id.items_container);
setHasFloatingButton(mView, R.id.fabButton, dashboardListView, this);
initAdapter();
mFilterDate = date.getDateString();
if (getActivity() != null) {
getLoaderManager().restartLoader(0, null, CalendarDashboard.this);
}
return calendarView;
}
private void initAdapter() {
mAdapter = new OCursorListAdapter(getActivity(), null,
R.layout.calendar_dashboard_item_view);
mAdapter.setBeforeBindUpdateData(this);
mAdapter.setOnViewBindListener(this);
mAdapter.setOnViewCreateListener(this);
dashboardListView.setAdapter(mAdapter);
mAdapter.changeCursor(null);
mAdapter.handleItemClickListener(dashboardListView, this);
setHasSyncStatusObserver(KEY, this, db());
}
@Override
public void onItemDoubleClick(View view, int position) {
ODataRow row = OCursorUtils.toDatarow((Cursor) mAdapter.getItem(position));
String type = row.getString("data_type");
Class<?> cls = EventDetail.class;
if (type.equals("phone_call")) {
cls = PhoneCallDetail.class;
}
if (type.equals("opportunity")) {
cls = CRMDetail.class;
}
IntentUtils.startActivity(getActivity(), cls, row.getPrimaryBundleData());
}
@Override
public void onItemClick(View view, int position) {
Cursor cr = (Cursor) mAdapter.getItem(position);
String data_type = cr.getString(cr.getColumnIndex("data_type"));
if (data_type.equals("event")) {
showSheet(SheetType.Event, cr);
}
if (data_type.equals("phone_call")) {
showSheet(SheetType.PhoneCall, cr);
}
if (data_type.equals("opportunity")) {
showSheet(SheetType.Opportunity, cr);
}
}
private void showSheet(SheetType type, Cursor data) {
if (mSheet != null) {
mSheet.dismiss();
}
BottomSheet.Builder builder = new BottomSheet.Builder(getActivity());
builder.listener(this);
builder.setIconColor(_c(R.color.body_text_2));
builder.setTextColor(_c(R.color.body_text_1));
builder.setData(data);
builder.actionListener(this);
builder.setActionIcon(R.drawable.ic_action_edit);
builder.title(data.getString(data.getColumnIndex("name")));
builder.setOnSheetMenuCreateListener(this);
switch (type) {
case Event:
builder.setOnSheetMenuCreateListener(this);
builder.menu(R.menu.menu_dashboard_events);
break;
case PhoneCall:
builder.menu(R.menu.menu_dashboard_phonecalls);
break;
case Opportunity:
builder.menu(R.menu.menu_dashboard_opportunity);
break;
}
mSheet = builder.create();
mSheet.show();
}
@Override
public void onSheetActionClick(BottomSheet sheet, final Object extras) {
sheet.dismiss();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Cursor cr = (Cursor) extras;
String data_type = cr.getString(cr.getColumnIndex("data_type"));
int record_id = cr.getInt(cr.getColumnIndex(OColumn.ROW_ID));
if (data_type.equals("phone_call")) {
Bundle extra = new Bundle();
extra.putInt(OColumn.ROW_ID, record_id);
IntentUtils.startActivity(getActivity(), PhoneCallDetail.class, extra);
}
if (data_type.equals("event")) {
Bundle extra = new Bundle();
extra.putInt(OColumn.ROW_ID, record_id);
IntentUtils.startActivity(getActivity(), EventDetail.class, extra);
}
if (data_type.equals("opportunity")) {
Bundle bundle = new Bundle();
bundle.putInt(OColumn.ROW_ID, record_id);
IntentUtils.startActivity(getActivity(), CRMDetail.class, bundle);
}
}
}, 250);
}
@Override
public void onSheetMenuCreate(Menu menu, Object extras) {
Cursor cr = (Cursor) extras;
String type = cr.getString(cr.getColumnIndex("data_type"));
String is_done = cr.getString(cr.getColumnIndex("is_done"));
if (type.equals("event")) {
ODataRow row = OCursorUtils.toDatarow(cr);
if (row.getString("location").equals("false")) {
menu.findItem(R.id.menu_events_location).setVisible(false);
}
if (is_done.equals("1")) {
menu.findItem(R.id.menu_events_all_done).setVisible(false);
}
}
}
@Override
public View onViewCreated(Context context, ViewGroup view, Cursor cr, int position) {
String data_type = cr.getString(cr.getColumnIndex("data_type"));
if (data_type.equals("separator")) {
return LayoutInflater.from(getActivity()).inflate(
R.layout.calendar_dashboard_item_separator, view, false);
}
return LayoutInflater.from(getActivity()).inflate(
R.layout.calendar_dashboard_item_view, view, false);
}
@Override
public ODataRow updateDataRow(Cursor cr) {
ODataRow row = OCursorUtils.toDatarow(cr);
String type = row.getString("data_type");
ODataRow record = new ODataRow();
if (type.equals("opportunity")) {
record.put("stage_id",
crmLead.browse(new String[]{"stage_id"}, row.getInt(OColumn.ROW_ID)).get("stage_id"));
}
return record;
}
@Override
public void onViewBind(View view, Cursor cursor, ODataRow row) {
String type = row.getString("data_type");
GradientDrawable shape = (GradientDrawable) getActivity().getResources()
.getDrawable(R.drawable.circle_mask_secondary);
int icon = -1;
ImageView iconView = (ImageView) view.findViewById(R.id.event_icon);
if (type.equals("separator")) {
OControls.setText(view, R.id.list_separator, row.getString("name"));
} else {
String colorCode = CalendarUtils.getColorData(row.getInt("color_index")).
getString("code");
shape.setColor(Color.parseColor(colorCode));
String date = "false";
String desc = null;
if (row.getString("description").equals("false")) {
row.put("description", "");
}
if (type.equals("event")) {
desc = row.getString("description");
icon = R.drawable.ic_action_event;
if (row.getString("allday").equals("false")) {
date = row.getString("date_start");
view.findViewById(R.id.allDay).setVisibility(View.GONE);
} else {
TextView allDayTag = (TextView) view.findViewById(R.id.allDay);
allDayTag.setTextColor(Color.parseColor(colorCode));
allDayTag.setVisibility(View.VISIBLE);
}
}
if (type.equals("phone_call")) {
icon = R.drawable.ic_action_phone;
date = row.getString("date");
desc = row.getString("description");
}
if (type.equals("opportunity")) {
icon = R.drawable.ic_action_opportunities;
ODataRow stage_id = row.getM2ORecord("stage_id").browse();
float probability = -1;
if (stage_id != null && !stage_id.getString("probability").equals("false")
&& (stage_id.getString("type").equals("opportunity") ||
stage_id.getString("type").equals("both"))) {
if (!stage_id.getString("name").equals("New"))
probability = stage_id.getFloat("probability");
}
if (probability == 0) {
// Lost
icon = R.drawable.ic_action_mark_lost;
} else if (probability >= 100) {
// Won
icon = R.drawable.ic_action_mark_won;
}
desc = row.getString("planned_revenue") + " "
+ ResCurrency.getSymbol(getActivity(), row.getInt("company_currency")) +
" at " + row.getString("probability") + " %";
if (!row.getString("title_action").equals("false")) {
desc += "\n" + row.getString("title_action");
}
OControls.setText(view, R.id.event_description, desc);
}
if (!date.equals("false")) {
Date dateNow = new Date();
Date eventDate = ODateUtils.createDateObject(date, ODateUtils.DEFAULT_FORMAT, false);
date = ODateUtils.convertToDefault(date, ODateUtils.DEFAULT_FORMAT, "hh:mm a");
OControls.setText(view, R.id.event_time, date);
if (dateNow.after(eventDate) && !row.getBoolean("is_done")) {
colorCode = "#cc0000";
}
}
OControls.setText(view, R.id.event_description, desc);
Boolean is_done = row.getString("is_done").equals("1");
OControls.setImage(view, R.id.event_icon, icon);
iconView.setBackgroundDrawable(shape);
int title_color = (is_done) ? Color.LTGRAY : Color.parseColor("#414141");
int time_color = (is_done) ? Color.LTGRAY : Color.parseColor(colorCode);
int desc_color = (is_done) ? Color.LTGRAY : _c(R.color.body_text_2);
int allDay_color = (is_done) ? Color.LTGRAY : Color.parseColor(colorCode);
OControls.setTextColor(view, R.id.event_name, title_color);
OControls.setTextColor(view, R.id.event_time, time_color);
OControls.setTextColor(view, R.id.event_description, desc_color);
OControls.setTextColor(view, R.id.allDay, allDay_color);
if (is_done) {
view.findViewById(R.id.event_icon).setBackgroundResource(
R.drawable.circle_mask_gray);
OControls.setTextViewStrikeThrough(view, R.id.event_name);
OControls.setTextViewStrikeThrough(view, R.id.event_time);
OControls.setTextViewStrikeThrough(view, R.id.event_description);
OControls.setTextViewStrikeThrough(view, R.id.allDay);
}
OControls.setText(view, R.id.event_name, row.getString("name"));
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle data) {
List<String> args = new ArrayList<>();
String where = "";
args.add(mFilterDate);
CalendarEvent event = (CalendarEvent) db();
Uri uri = event.agendaUri();
switch (mFilterType) {
case PhoneCalls:
CRMPhoneCalls phoneCalls = new CRMPhoneCalls(getActivity(), db().getUser());
uri = phoneCalls.uri();
where = "date(date) >= ? and date(date) <= ? and (state = ? or state = ?)";
args.add(mFilterDate);
args.add("open");
args.add("pending");
if (mFilter != null) {
where += " and (name like ? or description like ?)";
args.add("%" + mFilter + "%");
}
break;
case Opportunities:
CRMLead leads = new CRMLead(getActivity(), db().getUser());
uri = leads.uri();
where = "(date(date_deadline) >= ? and date(date_deadline) <= ? or " +
"date(date_action) >= ? and date(date_action) <= ?) and type = ?";
args.add(mFilterDate);
args.add(mFilterDate);
args.add(mFilterDate);
args.add("opportunity");
if (mFilter != null) {
where += " and (name like ? or description like ?)";
args.add("%" + mFilter + "%");
}
break;
case Meetings:
uri = db().uri();
where = "(date(date_start) <= ? and date(date_end) >= ? )";
args.add(mFilterDate);
if (mFilter != null) {
where += " and name like ?";
}
break;
}
if (mFilter != null) {
args.add("%" + mFilter + "%");
}
return new CursorLoader(getActivity(), uri,
null, where, args.toArray(new String[args.size()]), null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor cr) {
mAdapter.changeCursor(cr);
if (cr != null) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (cr.getCount() > 0) {
OControls.setGone(calendarView, R.id.dashboard_progress);
OControls.setVisible(calendarView, R.id.items_container);
OControls.setGone(calendarView, R.id.dashboard_no_items);
setHasSwipeRefreshView(calendarView, R.id.swipe_container,
CalendarDashboard.this);
} else {
setHasSwipeRefreshView(calendarView,
R.id.dashboard_no_items, CalendarDashboard.this);
OControls.setGone(calendarView, R.id.dashboard_progress);
OControls.setVisible(calendarView, R.id.dashboard_no_items);
}
}
}, 300);
}
if (db().isEmptyTable() && !syncRequested) {
syncRequested = true;
parent().sync().requestSync(CalendarEvent.AUTHORITY);
setSwipeRefreshing(true);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.changeCursor(null);
}
@Override
public List<ODrawerItem> drawerMenus(Context context) {
List<ODrawerItem> menu = new ArrayList<>();
menu.add(new ODrawerItem(KEY).setTitle("Calendar")
.setInstance(new CalendarDashboard())
.setIcon(R.drawable.ic_action_dashboard));
return menu;
}
@Override
public Class<CalendarEvent> database() {
return CalendarEvent.class;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.fabButton:
case R.id.dashboard_no_item_view:
createEvent();
break;
}
}
@Override
public void onItemClick(BottomSheet sheet, MenuItem menu, Object extras) {
dismissSheet(sheet);
actionEvent(menu, (Cursor) extras);
}
private void actionEvent(MenuItem menu, Cursor cr) {
String is_done = cr.getString(cr.getColumnIndex("is_done"));
final OValues values = new OValues();
values.put("_is_dirty", "false"); // to ignore update on server
final int row_id = cr.getInt(cr.getColumnIndex(OColumn.ROW_ID));
values.put("is_done", (is_done.equals("0")) ? 1 : 0);
String done_label = (is_done.equals("0")) ? "done" : "undone";
final ODataRow row = OCursorUtils.toDatarow(cr);
convertRequestRecord = row;
Bundle data = row.getPrimaryBundleData();
switch (menu.getItemId()) {
// Event menus
case R.id.menu_events_location:
String location = cr.getString(cr.getColumnIndex("location"));
if (location.equals("false")) {
Toast.makeText(getActivity(), _s(R.string.label_no_location_found),
Toast.LENGTH_LONG).show();
} else {
IntentUtils.redirectToMap(getActivity(), location);
}
break;
case R.id.menu_events_reschedule:
IntentUtils.startActivity(getActivity(), EventDetail.class, data);
break;
// Opportunity menus
case R.id.menu_opp_customer_location:
String address = cr.getString(cr.getColumnIndex("street")) + " ";
address += cr.getString(cr.getColumnIndex("street2")) + " ";
address += cr.getString(cr.getColumnIndex("city")) + " ";
address += cr.getString(cr.getColumnIndex("zip"));
address = address.replaceAll("false", "");
if (TextUtils.isEmpty(address.trim())) {
Toast.makeText(getActivity(), _s(R.string.label_no_location_found),
Toast.LENGTH_LONG).show();
} else {
IntentUtils.redirectToMap(getActivity(), address);
}
break;
case R.id.menu_opp_call_customer:
case R.id.menu_phonecall_call:
int partner_id = cr.getInt(cr.getColumnIndex("partner_id"));
if (partner_id != 0) {
String contact = ResPartner.getContact(getActivity(), partner_id);
if (contact != null && !contact.equals("false")) {
IntentUtils.requestCall(getActivity(), contact);
} else {
Toast.makeText(getActivity(), _s(R.string.label_no_contact_found),
Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getActivity(), _s(R.string.label_no_contact_found),
Toast.LENGTH_LONG).show();
}
break;
case R.id.menu_opp_lost:
if (inNetwork()) {
wonLost = "lost";
crmLead.markWonLost(wonLost, row, markDoneListener);
} else {
Toast.makeText(getActivity(), _s(R.string.toast_network_required),
Toast.LENGTH_LONG).show();
}
break;
case R.id.menu_opp_won:
if (inNetwork()) {
wonLost = "won";
crmLead.markWonLost(wonLost, row, markDoneListener);
} else {
Toast.makeText(getActivity(), _s(R.string.toast_network_required),
Toast.LENGTH_LONG).show();
}
break;
case R.id.menu_opp_reschedule:
List<String> choices = new ArrayList<>();
choices.add(OResource.string(getActivity(), R.string.label_opt_schedule_log_call));
choices.add(OResource.string(getActivity(), R.string.label_opt_schedule_meeting));
OChoiceDialog.get(getActivity()).withOptions(choices, -1)
.show(new OChoiceDialog.OnChoiceSelectListener() {
@Override
public void choiceSelected(int position, String value) {
int opp_id = row.getInt(OColumn.ROW_ID);
switch (position) {
case 0:
Bundle extra = new Bundle();
extra.putInt("opp_id", opp_id);
IntentUtils.startActivity(getActivity(), PhoneCallDetail.class, extra);
break;
case 1: // Schedule meeting
Bundle data = new Bundle();
data.putString(KEY_DATE, mFilterDate);
data.putInt("opp_id", opp_id);
IntentUtils.startActivity(getActivity(), EventDetail.class, data);
break;
}
}
});
break;
case R.id.menu_phonecall_reschedule:
choices = new ArrayList<>();
choices.add("Re-Schedule call");
choices.add("Schedule other call");
OChoiceDialog.get(getActivity()).withOptions(choices, -1)
.show(new OChoiceDialog.OnChoiceSelectListener() {
@Override
public void choiceSelected(int position, String value) {
switch (position) {
case 0: // Re-Schedule
IntentUtils.startActivity(getActivity(), PhoneCallDetail.class,
row.getPrimaryBundleData());
break;
case 1: // Schedule other call
Bundle extra = row.getPrimaryBundleData();
extra.putInt("call_id", row.getInt(OColumn.ROW_ID));
IntentUtils.startActivity(getActivity(), PhoneCallDetail.class,
extra);
break;
}
}
});
break;
// All done menu
case R.id.menu_phonecall_all_done:
final CRMPhoneCalls phone_call = new CRMPhoneCalls(getActivity(), null);
values.put("state", "done");
phone_call.update(row_id, values);
getLoaderManager().restartLoader(0, null, this);
SnackBar.get(getActivity()).text(_s(R.string.toast_phone_call_marked_done) + " " + done_label)
.duration(SnackbarBuilder.SnackbarDuration.LENGTH_LONG)
.withEventListener(this).show();
break;
case R.id.menu_events_all_done:
db().update(row_id, values);
getLoaderManager().restartLoader(0, null, this);
SnackBar.get(getActivity()).text(_s(R.string.label_event_marked) + " " + done_label)
.duration(SnackbarBuilder.SnackbarDuration.LENGTH_LONG)
.withEventListener(this).show();
break;
case R.id.menu_lead_convert_to_quotation:
if (inNetwork()) {
Intent intent = new Intent(getActivity(), ConvertToQuotation.class);
intent.putExtras(row.getPrimaryBundleData());
parent().startActivityForResult(intent, REQUEST_CONVERT_TO_QUOTATION_WIZARD);
} else {
Toast.makeText(getActivity(), R.string.toast_network_required,
Toast.LENGTH_LONG).show();
}
break;
}
}
CRMLead.OnOperationSuccessListener markDoneListener = new CRMLead.OnOperationSuccessListener() {
@Override
public void OnSuccess() {
Toast.makeText(getActivity(), StringUtils.capitalizeString(convertRequestRecord.getString("type"))
+ " " + _s(R.string.toast_marked) + " " + wonLost, Toast.LENGTH_LONG).show();
}
@Override
public void OnCancelled() {
}
};
private void dismissSheet(final BottomSheet sheet) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
sheet.dismiss();
}
}, 100);
}
@Override
public boolean onBackPressed() {
if (mSheet != null && mSheet.isShowing()) {
mSheet.dismiss();
return false;
}
return true;
}
@Override
public void onRefresh() {
if (inNetwork()) {
parent().sync().requestSync(CalendarEvent.AUTHORITY);
// Syncing phone calls and sales order
SyncUtils.get(getActivity(), db().getUser()).requestSync(CRMPhoneCalls.AUTHORITY);
// Syncing only Opportunity from agenda
Bundle syncData = new Bundle();
syncData.putBoolean(CRMLeads.KEY_IS_LEAD, false);
SyncUtils.get(getActivity(), db().getUser()).requestSync(CRMLead.AUTHORITY, syncData);
setSwipeRefreshing(true);
} else {
hideRefreshingProgress();
Toast.makeText(getActivity(),
_s(R.string.toast_network_required), Toast.LENGTH_LONG).show();
}
}
@Override
public void onStatusChange(Boolean refreshing) {
getLoaderManager().restartLoader(0, null, this);
setSwipeRefreshing(refreshing);
}
@Override
public void onShow(int height) {
hideFab();
}
@Override
public void onDismiss(int height) {
showFab();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.menu_calendar_dashboard, menu);
if (getActivity() != null) {
MenuItem today = menu.findItem(R.id.menu_dashboard_goto_today);
today.setIcon(TodayIcon.get(getActivity()).getIcon());
}
setHasSearchView(this, menu, R.id.menu_search);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_dashboard_goto_today:
odooCalendar.goToToday();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onSearchViewTextChange(String newFilter) {
mFilter = newFilter;
getLoaderManager().restartLoader(0, null, this);
return true;
}
@Override
public void onSearchViewClose() {
// Nothing to do
}
private void createEvent() {
Bundle data = new Bundle();
data.putString(KEY_DATE, mFilterDate);
IntentUtils.startActivity(getActivity(), EventDetail.class, data);
}
@Override
public void onOdooActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CONVERT_TO_QUOTATION_WIZARD &&
resultCode == Activity.RESULT_OK) {
crmLead.createQuotation(convertRequestRecord, data.getStringExtra("partner_id"),
data.getBooleanExtra("mark_won", false), createQuotationListener);
}
}
CRMLead.OnOperationSuccessListener createQuotationListener = new CRMLead.
OnOperationSuccessListener() {
@Override
public void OnSuccess() {
Toast.makeText(getActivity(), _s(R.string.label_quotation_created) + " " +
convertRequestRecord.getString("name"), Toast.LENGTH_LONG).show();
parent().sync().requestSync(SaleOrder.AUTHORITY);
}
@Override
public void OnCancelled() {
}
};
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/EventDetail.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 5:46 PM
*/
package com.odoo.addons.calendar;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.odoo.addons.calendar.models.CalendarEvent;
import com.odoo.addons.calendar.utils.CalendarUtils;
import com.odoo.addons.calendar.utils.EventColorDialog;
import com.odoo.addons.calendar.utils.ReminderDialog;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.utils.OActionBarUtils;
import com.odoo.core.utils.OAlert;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.OResource;
import com.odoo.core.utils.notification.ONotificationBuilder;
import com.odoo.core.utils.reminder.ReminderReceiver;
import com.odoo.core.utils.reminder.ReminderUtils;
import com.odoo.R;
import java.util.Date;
import odoo.controls.OField;
import odoo.controls.OForm;
public class EventDetail extends ActionBarActivity implements View.OnClickListener,
EventColorDialog.OnColorSelectListener, OField.IOnFieldValueChangeListener, ReminderDialog.OnReminderValueSelectListener {
public static final String TAG = EventDetail.class.getSimpleName();
private ActionBar actionBar;
public static final String KEY_RESCHEDULE = "key_reschedule";
private static final String KEY_EXTRA_EVENT_COLOR = "event_color";
private static final String KEY_COLOR_DATA = "color_data";
private String mEventColor = CalendarUtils.getBackgroundColors()[0];
private OForm eventForm;
private Integer mEventColorCode = 0;
private ReminderDialog.ReminderItem mReminder;
private ODataRow color_data = null;
private Boolean mAllDay = false;
private View mView = null;
private CalendarEvent calendarEvent;
private int row_id = -1;
private OField event_date_end, event_date_start, event_time_end, event_time_start, allDay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calendar_event_detail_form);
OActionBarUtils.setActionBar(this, true);
calendarEvent = new CalendarEvent(this, null);
actionBar = getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_mark_undone);
actionBar.setTitle(R.string.label_new_meeting);
mView = findViewById(R.id.eventForm);
event_date_end = (OField) findViewById(R.id.event_date_end);
event_time_end = (OField) findViewById(R.id.event_end_time);
event_date_start = (OField) findViewById(R.id.event_date_start);
event_time_start = (OField) findViewById(R.id.event_start_time);
allDay = (OField) findViewById(R.id.fieldAllDay);
if (savedInstanceState != null) {
mEventColor = savedInstanceState.getString(KEY_EXTRA_EVENT_COLOR);
color_data = savedInstanceState.getParcelable(KEY_COLOR_DATA);
colorSelected(color_data);
} else {
setThemeColor(mEventColor);
}
allDay.setOnValueChangeListener(this);
((OField) findViewById(R.id.event_date_start)).setOnValueChangeListener(this);
((OField) findViewById(R.id.event_start_time)).setOnValueChangeListener(this);
// OnClicks
findViewById(R.id.event_color).setOnClickListener(this);
findViewById(R.id.reminderForEvent).setOnClickListener(this);
Bundle extra = getIntent().getExtras();
eventForm = (OForm) mView;
eventForm.setModel(calendarEvent.getModelName());
if (extra != null) {
row_id = getIntent().getIntExtra(OColumn.ROW_ID, -1);
if (row_id != -1) {
findViewById(R.id.meetingDeleteLayout).setVisibility(View.VISIBLE);
findViewById(R.id.meetingDeleteLayout).setOnClickListener(this);
actionBar.setTitle(R.string.label_edit_meeting);
ODataRow record = calendarEvent.browse(row_id);
eventForm.initForm(record);
allDay.setValue(record.getBoolean("allday"));
String dateFormat = (record.getBoolean("allday")) ? ODateUtils.DEFAULT_DATE_FORMAT :
ODateUtils.DEFAULT_FORMAT;
event_date_start.setValue(ODateUtils.parseDate(record.getString("date_start"),
dateFormat,
ODateUtils.DEFAULT_DATE_FORMAT));
event_date_end.setValue(ODateUtils.parseDate(record.getString("date_end"),
dateFormat,
ODateUtils.DEFAULT_DATE_FORMAT));
event_time_start.setValue(ODateUtils.parseDate(record.getString("date_start"),
dateFormat,
ODateUtils.DEFAULT_TIME_FORMAT));
event_time_end.setValue(ODateUtils.parseDate(record.getString("date_end"),
dateFormat,
ODateUtils.DEFAULT_TIME_FORMAT));
colorSelected(CalendarUtils.getColorData(record.getInt("color_index")));
} else {
ODataRow opp_data = new ODataRow();
if (extra.containsKey(CalendarDashboard.KEY_DATE)) {
event_date_start.setValue(extra.getString(CalendarDashboard.KEY_DATE));
event_date_end.setValue(extra.getString(CalendarDashboard.KEY_DATE));
}
OField opp_field = (OField) findViewById(R.id.opportunity_id);
if (extra.containsKey("opp_id")) {
opp_field.setVisibility(View.VISIBLE);
opp_data.put("opportunity_id", extra.getInt("opp_id"));
}
eventForm.initForm(opp_data);
opp_field.setEditable(false);
}
} else {
eventForm.initForm(null);
}
String action = getIntent().getAction();
if (action != null && (action.equals(ReminderReceiver.ACTION_EVENT_REMINDER_DONE) ||
action.equals(ReminderReceiver.ACTION_EVENT_REMINDER_RE_SCHEDULE))) {
ONotificationBuilder.cancelNotification(this, getIntent().getExtras().
getInt(OColumn.ROW_ID));
if (action.equals(ReminderReceiver.ACTION_EVENT_REMINDER_DONE)) {
int row_id = getIntent().getExtras().getInt(OColumn.ROW_ID);
OValues values = new OValues();
values.put("is_done", 1);
calendarEvent.update(row_id, values);
Toast.makeText(this, R.string.toast_event_marked_done, Toast.LENGTH_LONG).show();
extra.remove(KEY_RESCHEDULE);
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.event_color:
CalendarUtils.colorDialog(this, mEventColor, this).show();
break;
case R.id.reminderForEvent:
ReminderDialog dialog = new ReminderDialog(this,
(mAllDay) ? ReminderDialog.ReminderType.FullDayEvent :
ReminderDialog.ReminderType.TimeBasedEvent);
dialog.setOnReminderValueSelectListener(this);
dialog.show();
break;
case R.id.meetingDeleteLayout:
OAlert.showConfirm(this, "Are you sure want to delete meeting ?",
new OAlert.OnAlertConfirmListener() {
@Override
public void onConfirmChoiceSelect(OAlert.ConfirmType type) {
switch (type) {
case POSITIVE:
calendarEvent.delete(row_id);
Toast.makeText(EventDetail.this, "Meeting deleted",
Toast.LENGTH_LONG).show();
finish();
break;
case NEGATIVE:
}
}
});
break;
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_EXTRA_EVENT_COLOR, mEventColor);
outState.putParcelable(KEY_COLOR_DATA, color_data);
}
@Override
public void colorSelected(ODataRow color_data) {
if (color_data != null) {
mEventColor = color_data.getString("code");
this.color_data = color_data;
ImageView event_color_view = (ImageView) findViewById(R.id.event_color_view);
event_color_view.setColorFilter(Color.parseColor(mEventColor));
OControls.setText(mView, R.id.event_color_label,
color_data.getString("label"));
mEventColorCode = color_data.getInt("index");
setThemeColor(mEventColor);
}
}
private void setThemeColor(String color_code) {
int color = Color.parseColor(color_code);
actionBar.setBackgroundDrawable(new ColorDrawable(color));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_calendar_detail, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
case R.id.menu_calendar_detail_save:
OValues values = eventForm.getValues();
if (values != null) {
createMeeting(values);
}
break;
}
return super.onOptionsItemSelected(item);
}
private void createMeeting(OValues values) {
OValues meeting = new OValues();
meeting.put("name", values.get("name"));
meeting.put("allday", values.get("allday"));
meeting.put("location", values.get("location"));
meeting.put("description", values.get("description"));
meeting.put("class", values.get("class"));
meeting.put("color_index", mEventColorCode);
if (values.contains("opportunity_id")) {
meeting.put("opportunity_id", values.get("opportunity_id"));
}
if (calendarEvent.getColumn("date") == null) {
//v7+
if (values.getBoolean("allday")) {
meeting.put("start_date", values.get("event_date_start"));
meeting.put("stop_date", values.get("event_date_end"));
meeting.put("date_start", meeting.get("start_date"));
meeting.put("date_end", meeting.get("stop_date"));
} else {
String start_datetime = values.get("event_date_start") + " " + values.get("event_time_start");
String stop_datetime = values.get("event_date_end") + " " + values.get("event_time_end");
meeting.put("start_datetime", start_datetime);
meeting.put("stop_datetime", stop_datetime);
meeting.put("date_start", meeting.get("start_datetime"));
meeting.put("date_end", meeting.get("stop_datetime"));
}
} else {
//v7
String start_datetime = values.get("event_date_start") + " " +
values.get("event_time_start");
String stop_datetime = values.get("event_date_end") + " " +
values.get("event_time_end");
meeting.put("date", start_datetime);
meeting.put("date_deadline", stop_datetime);
meeting.put("date_start", meeting.get("date"));
meeting.put("date_end", meeting.get("date_deadline"));
}
String format = (meeting.getBoolean("allday")) ? ODateUtils.DEFAULT_DATE_FORMAT :
ODateUtils.DEFAULT_FORMAT;
Date date_start = ODateUtils.createDateObject(meeting.getString("date_start"),
format, false);
Date date_end = ODateUtils.createDateObject(meeting.getString("date_end"),
format, false);
if (date_end.compareTo(date_start) < 0) {
OAlert.showWarning(this, OResource.string(this,
R.string.error_end_date_small_than_start_date));
} else {
Date now = new Date();
Date reminderDate = null;
int diff = 99;
if (meeting.getBoolean("allday")) {
if (DateUtils.isToday(date_start.getTime())) {
diff = 0;
}
}
if (diff == 0 || now.compareTo(date_start) <= 0) {
meeting.put("has_reminder", "true");
if (mReminder == null) {
mReminder = ReminderDialog.getDefault(this, meeting.getBoolean("allday"));
}
reminderDate = ReminderDialog.getReminderDateTime(meeting.getString("date_start"),
meeting.getBoolean("allday"), mReminder);
if (reminderDate != null) {
meeting.put("reminder_datetime", ODateUtils.getDate(reminderDate,
ODateUtils.DEFAULT_FORMAT));
}
}
if (row_id != -1) {
Log.i(TAG, "Event updated");
calendarEvent.update(row_id, meeting);
} else {
Log.i(TAG, "Event created");
row_id = calendarEvent.insert(meeting);
}
Bundle extra = new Bundle();
extra.putInt(OColumn.ROW_ID, row_id);
extra.putString(ReminderUtils.KEY_REMINDER_TYPE, "event");
if (reminderDate != null) {
if (ReminderUtils.get(getApplicationContext()).resetReminder(reminderDate, extra)) {
Log.i(TAG, "Reminder added.");
}
}
finish();
}
}
public void onCheckedChanged(boolean isChecked) {
mAllDay = isChecked;
if (isChecked) {
OControls.setText(mView, R.id.reminderTypeName,
String.format(OResource.string(this, R.string.on_the_day_at), "9 AM"));
findViewById(R.id.event_start_time).setVisibility(View.GONE);
findViewById(R.id.event_end_time).setVisibility(View.GONE);
} else {
OControls.setText(mView, R.id.reminderTypeName, OResource.string(this,
R.string.at_the_time_of_event));
findViewById(R.id.event_start_time).setVisibility(View.VISIBLE);
findViewById(R.id.event_end_time).setVisibility(View.VISIBLE);
}
}
@Override
public void onFieldValueChange(OField field, Object value) {
if (field.getFieldName().equals("allday"))
onCheckedChanged(Boolean.parseBoolean(value.toString()));
if (field.getFieldName().equals("event_date_start")) {
event_date_end.setValue(value);
}
if (field.getFieldName().equals("event_time_start")) {
event_time_end.setValue(value);
}
}
@Override
public void onReminderItemSelect(ReminderDialog.ReminderItem value) {
OControls.setText(mView, R.id.reminderTypeName, value.getTitle());
mReminder = value;
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/models/CalendarEvent.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 10:26 AM
*/
package com.odoo.addons.calendar.models;
import android.content.Context;
import android.net.Uri;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.addons.phonecall.models.CRMPhoneCalls;
import com.odoo.base.addons.res.ResPartner;
import com.odoo.base.addons.res.ResUsers;
import com.odoo.core.orm.OModel;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.annotation.Odoo;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.orm.fields.types.OBoolean;
import com.odoo.core.orm.fields.types.ODate;
import com.odoo.core.orm.fields.types.ODateTime;
import com.odoo.core.orm.fields.types.OInteger;
import com.odoo.core.orm.fields.types.OSelection;
import com.odoo.core.orm.fields.types.OText;
import com.odoo.core.orm.fields.types.OVarchar;
import com.odoo.core.support.OUser;
import org.json.JSONArray;
import odoo.ODomain;
public class CalendarEvent extends OModel {
public static final String TAG = CalendarEvent.class.getSimpleName();
public static final String AUTHORITY = "com.odoo.core.crm.provider.content.sync.calendar_event";
private Context mContext;
OColumn name = new OColumn("Meeting Name", OVarchar.class).setSize(64).setRequired();
@Odoo.api.v7
OColumn date = new OColumn("Start Date", ODateTime.class);
@Odoo.api.v8
@Odoo.api.v9alpha
OColumn start_date = new OColumn("Start Date", ODate.class);
@Odoo.api.v8
@Odoo.api.v9alpha
OColumn start_datetime = new OColumn("Start Date", ODateTime.class);
@Odoo.api.v7
OColumn date_deadline = new OColumn("Dead Line", ODateTime.class);
@Odoo.api.v8
@Odoo.api.v9alpha
OColumn stop_date = new OColumn("Stop Date", ODate.class);
@Odoo.api.v8
@Odoo.api.v9alpha
OColumn stop_datetime = new OColumn("Stop Date", ODateTime.class);
OColumn duration = new OColumn("Duration", OVarchar.class).setSize(32);
OColumn allday = new OColumn("All Day", OBoolean.class);
OColumn description = new OColumn("Description", OText.class);
OColumn location = new OColumn("Location", OText.class);
OColumn _class = new OColumn("Privacy", OSelection.class)
.addSelection("public", "Public")
.addSelection("private", "Private")
.addSelection("confidential", "Public for Employees")
.setDefaultValue("public");
@Odoo.Functional(store = true, depends = {"date", "start_date",
"start_datetime"}, method = "storeStartDate")
OColumn date_start = new OColumn("Start Date", ODateTime.class)
.setLocalColumn();
@Odoo.Functional(store = true, depends = {"date_deadline", "stop_date",
"stop_datetime"}, method = "storeStopDate")
OColumn date_end = new OColumn("Start Date", ODateTime.class)
.setLocalColumn();
OColumn data_type = new OColumn("Data type", OVarchar.class).setSize(34)
.setLocalColumn().setDefaultValue("event");
OColumn is_done = new OColumn("Mark as Done", OInteger.class)
.setLocalColumn().setDefaultValue("0");
OColumn color_index = new OColumn("Color index", OInteger.class).setSize(5)
.setLocalColumn().setDefaultValue(0);
OColumn has_reminder = new OColumn("Has reminder", OBoolean.class).setLocalColumn()
.setDefaultValue("false");
OColumn reminder_datetime = new OColumn("Reminder type", ODateTime.class)
.setDefaultValue("false").setLocalColumn();
OColumn user_id = new OColumn("Owner", ResUsers.class, OColumn.RelationType.ManyToOne);
OColumn partner_ids = new OColumn("Attendees", ResPartner.class, OColumn.RelationType.ManyToMany);
// PhoneCalls link
OColumn phonecall_id = new OColumn("Phone calls", CRMPhoneCalls.class, OColumn.RelationType.ManyToOne);
//Opportunities id
OColumn opportunity_id = new OColumn("Opportunities", CRMLead.class, OColumn.RelationType.ManyToOne)
.addDomain("type", "=", "opportunity");
public CalendarEvent(Context context, OUser user) {
super(context, "calendar.event", user);
mContext = context;
if (getUser() != null && getUser().getVersion_number() != null) {
int version = getUser().getVersion_number();
if (version <= 7) {
setModelName("crm.meeting");
}
}
// Setting 'class' variable name not allowed in java.
_class.setName("class");
setHasMailChatter(true);
}
@Override
public ODomain defaultDomain() {
ODomain domain = new ODomain();
if (getOdooVersion().getVersion_number() <= 7) {
domain.add("|");
domain.add("user_id", "=", getUser().getUser_id());
domain.add("partner_ids", "in", new JSONArray().put(getUser().getPartner_id()));
} else {
domain.add("partner_ids", "in", new JSONArray().put(getUser().getPartner_id()));
}
domain.add("recurrency", "=", false);
return domain;
}
@Override
public Uri uri() {
return buildURI(AUTHORITY);
}
public Uri agendaUri() {
return uri().buildUpon().appendPath("full_agenda").build();
}
public String storeStartDate(OValues value) {
if (value.contains("date")) {
return value.getString("date");
}
if (!value.getString("start_date").equals("false"))
return value.getString("start_date");
return value.getString("start_datetime");
}
public String storeStopDate(OValues value) {
if (value.contains("date_deadline")) {
return value.getString("date_deadline");
}
if (!value.getString("stop_date").equals("false"))
return value.getString("stop_date");
return value.getString("stop_datetime");
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/providers/CalendarSyncProvider.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 10:25 AM
*/
package com.odoo.addons.calendar.providers;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MergeCursor;
import android.net.Uri;
import com.odoo.addons.calendar.models.CalendarEvent;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.addons.phonecall.models.CRMPhoneCalls;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.orm.provider.BaseModelProvider;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class CalendarSyncProvider extends BaseModelProvider {
public static final String TAG = CalendarSyncProvider.class.getSimpleName();
public static final int FULL_AGENDA = 114;
@Override
public boolean onCreate() {
String path = new CalendarEvent(getContext(), null).getModelName().toLowerCase(Locale.getDefault());
matcher.addURI(authority(), path + "/full_agenda", FULL_AGENDA);
return super.onCreate();
}
@Override
public void setModel(Uri uri) {
super.setModel(uri);
mModel = new CalendarEvent(getContext(), getUser(uri));
}
@Override
public Cursor query(Uri uri, String[] base_projection, String selection, String[] selectionArgs,
String sortOrder) {
int match = matcher.match(uri);
CalendarEvent events = new CalendarEvent(getContext(), null);
if (match != FULL_AGENDA) {
return super.query(uri, base_projection, selection, selectionArgs, sortOrder);
}
String date_start = selectionArgs[0];
String filter = null;
if (selectionArgs.length > 1)
filter = selectionArgs[1];
String where;
List<String> args = new ArrayList<>();
// Getting events
MatrixCursor event_separator = new MatrixCursor(
new String[]{OColumn.ROW_ID, "data_type", "name"});
// Comparing date_start and date_end
where = "(date(date_start) <= ? and date(date_end) >= ? )";
args.add(date_start);
args.add(date_start);
if (filter != null) {
where += " and name like ?";
args.add(filter);
}
Cursor eventCR = getContext().getContentResolver().query(events.uri(),
base_projection, where, args.toArray(new String[args.size()]), "is_done, date_start");
if (eventCR.getCount() > 0)
event_separator.addRow(new String[]{"0", "separator", "Meetings"});
// Getting phone calls
CRMPhoneCalls phoneCalls = new CRMPhoneCalls(getContext(), null);
MatrixCursor phone_calls_separator = new MatrixCursor(
new String[]{OColumn.ROW_ID, "data_type", "name"});
// Comparing date
where = "date(date) >= ? and date(date) <= ? and (state = ? or state = ?)";
args.clear();
args.add(date_start);
args.add(date_start);
args.add("open");
args.add("pending");
if (filter != null) {
where += " and (name like ? or description like ?)";
args.add(filter);
args.add(filter);
}
Cursor phoneCallsCR = getContext().getContentResolver().query(phoneCalls.uri(),
base_projection, where, args.toArray(new String[args.size()]), "is_done , date");
if (phoneCallsCR.getCount() > 0)
phone_calls_separator.addRow(new String[]{"0", "separator", "Phone Calls"});
// Getting opportunity
CRMLead opportunity = new CRMLead(getContext(), null);
MatrixCursor opportunity_separator = new MatrixCursor(
new String[]{OColumn.ROW_ID, "data_type", "name"});
// Comparing with create_date and date_action and type
where = "(date(date_deadline) >= ? and date(date_deadline) <= ? or date(date_action) >= ? " +
"and date(date_action) <= ?) and type = ?";
args.clear();
args.add(date_start);
args.add(date_start);
args.add(date_start);
args.add(date_start);
args.add("opportunity");
if (filter != null) {
where += " and (name like ? or description like ?)";
args.add(filter);
args.add(filter);
}
Cursor opportunityCR = getContext().getContentResolver().query(opportunity.uri(),
base_projection, where, args.toArray(new String[args.size()]), sortOrder);
if (opportunityCR.getCount() > 0)
opportunity_separator.addRow(new String[]{"0", "separator", "Opportunities"});
MergeCursor mergedData = new MergeCursor(new Cursor[]{
event_separator, eventCR, phone_calls_separator, phoneCallsCR, opportunity_separator,
opportunityCR});
return mergedData;
}
@Override
public String authority() {
return CalendarEvent.AUTHORITY;
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/services/CalendarSyncService.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 3:57 PM
*/
package com.odoo.addons.calendar.services;
import android.content.Context;
import android.content.SyncResult;
import android.os.Bundle;
import android.util.Log;
import com.odoo.addons.calendar.models.CalendarEvent;
import com.odoo.core.account.BaseSettings;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.service.ISyncFinishListener;
import com.odoo.core.service.OSyncAdapter;
import com.odoo.core.service.OSyncService;
import com.odoo.core.support.OUser;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.reminder.ReminderUtils;
import java.util.Date;
import java.util.List;
public class CalendarSyncService extends OSyncService implements ISyncFinishListener {
public static final String TAG = CalendarSyncService.class.getSimpleName();
public static final int SYNC_SLEEP_DELAY = 2000;
@Override
public OSyncAdapter getSyncAdapter(OSyncService service, Context context) {
return new OSyncAdapter(context, CalendarEvent.class, service, true);
}
@Override
public void performDataSync(OSyncAdapter adapter, Bundle extras, OUser user) {
if (adapter.getModel().getModelName().equals("calendar.event")) {
adapter.onSyncFinish(this).syncDataLimit(50);
}
}
@Override
public OSyncAdapter performNextSync(OUser user, SyncResult syncResult) {
// Setting reminders to events
CalendarEvent event = new CalendarEvent(getApplicationContext(), null);
List<ODataRow> rows = event.select();
int count = 0;
for (ODataRow row : rows) {
if (row.getBoolean("allday")) {
String defaultTime = BaseSettings.getDayStartTime(getApplicationContext());
row.put("date_start", row.getString("date_start") + " " + defaultTime);
}
Date start_date = ODateUtils.createDateObject(row.getString("date_start"),
ODateUtils.DEFAULT_FORMAT, false);
Date now = new Date();
if (now.compareTo(start_date) < 0) {
Bundle extra = row.getPrimaryBundleData();
extra.putString(ReminderUtils.KEY_REMINDER_TYPE, "event");
if (ReminderUtils.get(getApplicationContext()).resetReminder(start_date, extra)) {
OValues values = new OValues();
values.put("_is_dirty", "false");
values.put("has_reminder", "true");
event.update(row.getInt(OColumn.ROW_ID), values);
count++;
}
}
}
Log.i(TAG, count + " reminder updated");
return null;
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/utils/CalendarUtils.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 12/1/15 11:12 AM
*/
package com.odoo.addons.calendar.utils;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import com.odoo.core.orm.ODataRow;
public class CalendarUtils {
public static final String TAG = CalendarUtils.class.getSimpleName();
private static String[] background_colors = {"#a24689", "#d40000",
"#f24f1d", "#f5be27", "#0a7d40", "#35b579", "#029ce3", "#405ea8",
"#7986c9", "#8b23a8", "#e37971", "#616161"};
private static String[] color_label = {"Default Color", "Tomato",
"Tangerine", "Banana", "Basil", "Sage", "Peacock", "Blueberry",
"Lavender", "Grape", "Flamingo", "Graphite"};
public static String[] getBackgroundColors() {
return background_colors;
}
public static String[] getColorLabels() {
return color_label;
}
public static int getBackgroundColor(int color_number) {
if (color_number < background_colors.length) {
return Color.parseColor(background_colors[color_number]);
}
return Color.parseColor("#ffffff");
}
public static String getColorLabel(int color_number) {
if (color_number < color_label.length) {
return color_label[color_number];
}
return "Default Color";
}
public static ODataRow getColorData(int index) {
ODataRow clr = new ODataRow();
clr.put("index", index);
clr.put("code", background_colors[index]);
clr.put("label", color_label[index]);
return clr;
}
public static AlertDialog colorDialog(Context context, String selected,
EventColorDialog.OnColorSelectListener listener) {
EventColorDialog dialog = new EventColorDialog(context, selected,
listener);
return dialog.build();
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/utils/EventColorDialog.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 12/1/15 11:13 AM
*/
package com.odoo.addons.calendar.utils;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.odoo.core.orm.ODataRow;
import com.odoo.R;
import java.util.ArrayList;
import java.util.List;
public class EventColorDialog implements AdapterView.OnItemClickListener {
public static final String TAG = EventColorDialog.class.getSimpleName();
private Builder builder = null;
private Context mContext;
private ArrayAdapter<ODataRow> mAdapter;
private List<ODataRow> colors = new ArrayList<ODataRow>();
private String selectedColor;
private OnColorSelectListener mOnColorSelectListener;
private AlertDialog alertDialog;
public EventColorDialog(Context context, String selected_color,
OnColorSelectListener listener) {
mContext = context;
selectedColor = selected_color;
mOnColorSelectListener = listener;
String[] bg_colors = CalendarUtils.getBackgroundColors();
String[] color_labels = CalendarUtils.getColorLabels();
for (int i = 0; i < bg_colors.length; i++) {
ODataRow clr = new ODataRow();
clr.put("index", i);
clr.put("code", bg_colors[i]);
clr.put("label", color_labels[i]);
colors.add(clr);
}
}
public AlertDialog build() {
builder = new Builder(mContext);
builder.setView(getColorGrid());
alertDialog = builder.create();
return alertDialog;
}
private View getColorGrid() {
LinearLayout layout = (LinearLayout) LayoutInflater.from(mContext)
.inflate(R.layout.event_color_grid, null, false);
initGrid((GridView) layout.findViewById(R.id.event_grid));
return layout;
}
private void initGrid(GridView view) {
mAdapter = new ArrayAdapter<ODataRow>(mContext,
R.layout.event_color_chooser_item, colors) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ODataRow row = colors.get(position);
View view = convertView;
if (view == null) {
view = LayoutInflater.from(mContext).inflate(
R.layout.event_color_chooser_item, parent, false);
}
TextView color_label = (TextView) view
.findViewById(R.id.color_label);
color_label.setText(row.getString("label"));
ImageView color_view = (ImageView) view
.findViewById(R.id.color_view);
color_view.setColorFilter(Color.parseColor(row
.getString("code")));
boolean mSelected = (selectedColor.equals(row.getString("code")));
if (mSelected) {
color_label.setTextColor(mContext.getResources().getColor(
R.color.theme_secondary_dark));
view.findViewById(R.id.color_view_selected).setVisibility(
View.VISIBLE);
} else {
color_label.setTextColor(Color.parseColor("#414141"));
view.findViewById(R.id.color_view_selected).setVisibility(
View.GONE);
}
return view;
}
};
view.setAdapter(mAdapter);
view.setOnItemClickListener(this);
}
public interface OnColorSelectListener {
public void colorSelected(ODataRow color_data);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if (mOnColorSelectListener != null) {
mOnColorSelectListener.colorSelected(colors.get(position));
}
alertDialog.dismiss();
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/utils/ReminderDialog.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 12/1/15 3:47 PM
*/
package com.odoo.addons.calendar.utils;
import android.app.AlertDialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import com.odoo.core.account.BaseSettings;
import com.odoo.core.support.list.OListAdapter;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.OPreferenceManager;
import com.odoo.core.utils.OResource;
import com.odoo.R;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class ReminderDialog implements AdapterView.OnItemClickListener {
public static final String TAG = ReminderDialog.class.getSimpleName();
private AlertDialog.Builder mBuilder;
private AlertDialog mDialog;
private Context mContext;
private ReminderType mType;
private OListAdapter mAdapter;
private OnReminderValueSelectListener mOnReminderValueSelectListener = null;
private List<Object> reminderTypes = new ArrayList<>();
private OPreferenceManager mPref;
public enum ReminderType {
FullDayEvent, TimeBasedEvent
}
public ReminderDialog(Context context, ReminderType type) {
mContext = context;
reminderTypes.clear();
mPref = new OPreferenceManager(mContext);
mType = type;
List<ReminderItem> reminders = new ArrayList<>();
reminders.add(0, new ReminderItem(0, OResource.string(mContext, R.string.no_notification), "false"));
switch (mType) {
case FullDayEvent:
// At your working day start time
String workingStartTime = ODateUtils.parseDate(mPref.getString(BaseSettings.KEY_LEAD_WORK_DAY_START_TIME,
OResource.string(mContext, R.string.default_day_start_time)), ODateUtils.DEFAULT_TIME_FORMAT,
ODateUtils.DEFAULT_TIME_FORMAT);
reminders.add(1, new ReminderItem(1,
OResource.string(mContext, R.string.on_your_working_day_start_time),
workingStartTime));
// At 9 AM
reminders.add(2, new ReminderItem(2,
String.format(OResource.string(mContext, R.string.on_the_day_at), "9 AM"), "9:00 AM"));
// before day at 11:30 PM
reminders.add(3, new ReminderItem(3,
String.format(OResource.string(mContext, R.string.day_before_at), "11:30 PM"), "11:30 PM"));
// before day at 5:00 PM
reminders.add(4, new ReminderItem(4,
String.format(OResource.string(mContext, R.string.day_before_at), "5 PM"), "5:00 PM"));
break;
case TimeBasedEvent:
// At the time of event
reminders.add(new ReminderItem(1, OResource.string(mContext, R.string.at_the_time_of_event), 1));
// 30 min before
reminders.add(new ReminderItem(2,
String.format(OResource.string(mContext, R.string.minutes_before), "30"), 30));
// 10 min before
reminders.add(new ReminderItem(3,
String.format(OResource.string(mContext, R.string.minutes_before), "10"), 10));
break;
}
//TODO Custom reminder: reminders.add(new ReminderItem(4, OResource.string(mContext, R.string.custom), -1));
reminderTypes.addAll(reminders);
}
public List<Object> getReminderTypes() {
return reminderTypes;
}
public void show() {
mBuilder = new AlertDialog.Builder(mContext);
mBuilder.setView(generateView());
mDialog = mBuilder.create();
mDialog.show();
}
public static ReminderItem getDefault(Context context, boolean allDay) {
ReminderDialog dialog = new ReminderDialog(context,
(allDay) ? ReminderType.FullDayEvent : ReminderType.TimeBasedEvent);
return (ReminderItem) dialog.getReminderTypes().get(1);
}
private View generateView() {
AbsListView.LayoutParams param = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
ListView list = new ListView(mContext);
list.setLayoutParams(param);
mAdapter = new OListAdapter(mContext, R.layout.reminder_item_view, reminderTypes) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = LayoutInflater.from(mContext).inflate(getResource(),
parent, false);
ReminderItem item = (ReminderItem) getItem(position);
OControls.setText(convertView, R.id.reminderTitle, item.getTitle());
return convertView;
}
};
list.setAdapter(mAdapter);
list.setOnItemClickListener(this);
return list;
}
public static Date getReminderDateTime(String eventDateTime, Boolean allDay, ReminderItem item) {
String format = (allDay) ? ODateUtils.DEFAULT_DATE_FORMAT : ODateUtils.DEFAULT_FORMAT;
Date eventDate = ODateUtils.createDateObject(eventDateTime, format, false);
if (item.getRequest_code() != 0) {
Date dayBefore = ODateUtils.getDateDayBefore(eventDate, 1);
if (allDay) {
switch (item.getRequest_code()) {
case 1:
return ODateUtils.createDateObject(eventDateTime + " " + item.getValue(),
ODateUtils.DEFAULT_FORMAT, true);
case 2:
return ODateUtils.setDateTime(eventDate, 9, 0, 0);
case 3:
return ODateUtils.setDateTime(dayBefore, 23, 30, 0);
case 4:
return ODateUtils.setDateTime(dayBefore, 17, 0, 0);
}
} else {
switch (item.getRequest_code()) {
case 1:
return eventDate;
case 2:
case 3:
return ODateUtils.getDateMinuteBefore(eventDate, (Integer) item.getValue());
}
}
}
return null;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ReminderItem item = (ReminderItem) mAdapter.getItem(position);
switch (item.getRequest_code()) {
case 0:
case 1:
case 2:
case 3:
if (mOnReminderValueSelectListener != null) {
mOnReminderValueSelectListener.onReminderItemSelect(item);
}
mDialog.dismiss();
break;
case 4:
// TODO: Open custom dialog for reminder config
break;
}
}
public void setOnReminderValueSelectListener(OnReminderValueSelectListener listener) {
mOnReminderValueSelectListener = listener;
}
public interface OnReminderValueSelectListener {
public void onReminderItemSelect(ReminderItem value);
}
public static class ReminderItem {
int request_code;
String title;
Object value;
public ReminderItem(int request_code, String title, Object value) {
this.request_code = request_code;
this.title = title;
this.value = value;
}
public int getRequest_code() {
return request_code;
}
public void setRequest_code(int request_code) {
this.request_code = request_code;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/calendar/utils/TodayIcon.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 9/1/15 5:27 PM
*/
package com.odoo.addons.calendar.utils;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.text.TextPaint;
import com.odoo.R;
import java.util.Calendar;
import java.util.Locale;
public class TodayIcon {
public static final String TAG = TodayIcon.class.getSimpleName();
private Context mContext;
private Resources mRes;
private TextPaint mPaint = new TextPaint();
private Rect mBounds = new Rect();
private Canvas mCanvas = new Canvas();
private Bitmap mDefaultIcon;
public TodayIcon(Context context) {
mContext = context;
mRes = mContext.getResources();
}
private int date() {
return Calendar.getInstance(Locale.getDefault()).get(
Calendar.DAY_OF_MONTH);
}
public static TodayIcon get(Context context) {
return new TodayIcon(context);
}
public Drawable getIcon() {
mPaint.setTypeface(Typeface.create("sans-serif", Typeface.BOLD));
mPaint.setColor(Color.WHITE);
mPaint.setTextAlign(Align.CENTER);
mPaint.setAntiAlias(true);
mPaint.setTextSize(mRes.getDimension(R.dimen.text_size_xxsmall));
mDefaultIcon = BitmapFactory.decodeResource(mRes,
R.drawable.ic_action_goto_today);
Bitmap bmp = generate(mDefaultIcon.getWidth(), mDefaultIcon.getHeight());
return new BitmapDrawable(mRes, bmp);
}
private Bitmap generate(int width, int height) {
final String date = (date() < 10) ? "0" + date() + "" : date() + "";
final Canvas c = mCanvas;
final Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
c.setBitmap(bitmap);
c.drawBitmap(mDefaultIcon, 0, 0, null);
c.drawColor(Color.TRANSPARENT);
mPaint.getTextBounds(date, 0, 2, mBounds);
c.drawText(date, 0, 2, width / 2, 5 + height / 2
+ (mBounds.bottom - mBounds.top) / 2, mPaint);
return bitmap;
}
}
================================================
FILE: app/src/main/java/com/odoo/addons/crm/CRMDetail.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 13/1/15 3:40 PM
*/
package com.odoo.addons.crm;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.odoo.App;
import com.odoo.addons.crm.models.CRMCaseStage;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.addons.customers.Customers;
import com.odoo.addons.sale.models.SaleOrder;
import com.odoo.base.addons.res.ResCompany;
import com.odoo.base.addons.res.ResUsers;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OModel;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.support.sync.SyncUtils;
import com.odoo.core.utils.OActionBarUtils;
import com.odoo.core.utils.OAlert;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.OResource;
import com.odoo.core.utils.StringUtils;
import com.odoo.R;
import java.util.ArrayList;
import java.util.List;
import odoo.controls.OForm;
public class CRMDetail extends ActionBarActivity {
public static final String TAG = CRMDetail.class.getSimpleName();
public static final int REQUEST_CONVERT_TO_OPPORTUNITY_WIZARD = 1223;
public static final int REQUEST_CONVERT_TO_QUOTATION_WIZARD = 1224;
private Bundle extra;
private OForm mForm;
private ODataRow record;
private CRMLead crmLead;
private ActionBar actionBar;
private Menu menu;
private String wonLost = "won";
private String type = "lead";
private TextView currency_symbol;
private int stage_id = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.crm_detail);
OActionBarUtils.setActionBar(this, true);
actionBar = getSupportActionBar();
crmLead = new CRMLead(this, null);
extra = getIntent().getExtras();
init();
}
private void init() {
mForm = (OForm) findViewById(R.id.crmLeadForm);
currency_symbol = (TextView) findViewById(R.id.currency_symbol);
if (!extra.containsKey(OColumn.ROW_ID)) {
if (extra.getString("type").equals(Customers.Type.Opportunities.toString())) {
type = "opportunity";
findViewById(R.id.opportunity_controls).setVisibility(View.VISIBLE);
}
if (extra.containsKey("stage_id")) {
stage_id = extra.getInt("stage_id");
}
mForm.initForm(null);
actionBar.setTitle(R.string.label_tag_new);
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_navigation_close);
ODataRow currency = ResCompany.getCurrency(this);
if (currency != null) {
currency_symbol.setText(currency.getString("symbol"));
}
} else {
initFormValues();
}
mForm.setEditable(true);
}
private void initFormValues() {
record = crmLead.browse(extra.getInt(OColumn.ROW_ID));
if (record == null) {
finish();
}
ODataRow currency = record.getM2ORecord("company_currency").browse();
if (currency != null) {
currency_symbol.setText(currency.getString("symbol"));
}
if (!record.getString("type").equals("lead")) {
actionBar.setTitle(R.string.label_opportunity);
type = "opportunity";
findViewById(R.id.opportunity_controls).setVisibility(View.VISIBLE);
} else {
actionBar.setTitle(R.string.label_lead);
}
mForm.initForm(record);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_lead_detail, menu);
this.menu = menu;
toggleMenu();
return true;
}
private void toggleMenu() {
if (!extra.containsKey(OColumn.ROW_ID)) {
menu.findItem(R.id.menu_lead_detail_more).setVisible(false);
} else {
initFormValues();
menu.findItem(R.id.menu_lead_detail_more).setVisible(true);
if (record.getString("type").equals(CRMLead.KEY_LEAD)) {
menu.findItem(R.id.menu_lead_convert_to_quotation).setVisible(false);
menu.findItem(R.id.menu_mark_won).setVisible(false);
} else if (record.getString("type").equals(crmLead.KEY_OPPORTUNITY)) {
menu.findItem(R.id.menu_lead_convert_to_opportunity).setVisible(false);
}
}
menu.findItem(R.id.menu_lead_save).setVisible(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_navigation_close);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
App app = (App) getApplicationContext();
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
case R.id.menu_lead_save:
OValues values = mForm.getValues();
if (stage_id != OModel.INVALID_ROW_ID) {
values.put("stage_id", stage_id);
}
if (values != null) {
values.put("type", type);
int row_id;
if (record != null) {
crmLead.update(record.getInt(OColumn.ROW_ID), values);
row_id = record.getInt(OColumn.ROW_ID);
} else {
values.put("company_id", ResCompany.myId(this));
values.put("company_currency", ResCompany.myCurrency(this));
values.put("create_date", ODateUtils.getUTCDate());
values.put("user_id", ResUsers.myId(this));
CRMCaseStage stages = new CRMCaseStage(this, null);
ODataRow row;
if (!values.contains("stage_id")) {
row = stages.browse(new String[]{"name"}, "name = ?", new String[]{"New"});
} else {
row = stages.browse(stage_id);
}
if (row != null) {
values.put("stage_id", row.getInt(OColumn.ROW_ID));
values.put("stage_name", row.getString("name"));
}
values.put("display_name", values.getString("partner_name"));
values.put("assignee_name", crmLead.getUser().getName());
row_id = crmLead.insert(values);
}
crmLead.setReminder(row_id);
finish();
}
break;
case R.id.menu_lead_convert_to_opportunity:
if (record.getInt("id") == 0) {
OAlert.showWarning(this, OResource.string(this, R.string.label_sync_warning));
} else {
if (app.inNetwork()) {
int count = crmLead.count("id != ? and partner_id = ? and " + OColumn.ROW_ID + " != ?"
, new String[]{
"0",
record.getInt("partner_id") + "",
record.getString(OColumn.ROW_ID)
});
if (count > 0) {
Intent intent = new Intent(this, ConvertToOpportunityWizard.class);
intent.putExtras(record.getPrimaryBundleData());
startActivityForResult(intent, REQUEST_CONVERT_TO_OPPORTUNITY_WIZARD);
} else {
crmLead.convertToOpportunity(record, new ArrayList<Integer>(), convertDoneListener);
}
} else {
Toast.makeText(this, R.string.toast_network_required, Toast.LENGTH_LONG).show();
}
}
break;
case R.id.menu_mark_won:
if (app.inNetwork()) {
crmLead.markWonLost(wonLost, record, markDoneListener);
} else {
Toast.makeText(this, R.string.toast_network_required, Toast.LENGTH_LONG).show();
}
break;
case R.id.menu_mark_lost:
wonLost = "lost";
if (app.inNetwork()) {
crmLead.markWonLost(wonLost, record, markDoneListener);
} else {
Toast.makeText(this, R.string.toast_network_required, Toast.LENGTH_LONG).show();
}
break;
case R.id.menu_lead_convert_to_quotation:
if (app.inNetwork()) {
Intent intent = new Intent(this, ConvertToQuotation.class);
intent.putExtras(record.getPrimaryBundleData());
startActivityForResult(intent, REQUEST_CONVERT_TO_QUOTATION_WIZARD);
} else {
Toast.makeText(this, R.string.toast_network_required, Toast.LENGTH_LONG).show();
}
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CONVERT_TO_OPPORTUNITY_WIZARD && resultCode == RESULT_OK) {
List<Integer> ids = data.getIntegerArrayListExtra(ConvertToOpportunityWizard.KEY_LEADS_IDS);
crmLead.convertToOpportunity(record, ids, convertDoneListener);
}
if (requestCode == REQUEST_CONVERT_TO_QUOTATION_WIZARD && resultCode == Activity.RESULT_OK) {
crmLead.createQuotation(record, data.getStringExtra("partner_id"), data.getBooleanExtra("mark_won", false), createQuotationListener);
}
}
CRMLead.OnOperationSuccessListener createQuotationListener =
new CRMLead.OnOperationSuccessListener() {
@Override
public void OnSuccess() {
Toast.makeText(CRMDetail.this, OResource.string(CRMDetail.this,
R.string.label_quotation_created) + " " +
record.getString("name"), Toast.LENGTH_LONG).show();
SyncUtils sync = new SyncUtils(CRMDetail.this, crmLead.getUser());
sync.requestSync(SaleOrder.AUTHORITY);
}
@Override
public void OnCancelled() {
}
};
CRMLead.OnOperationSuccessListener markDoneListener = new CRMLead.OnOperationSuccessListener() {
@Override
public void OnSuccess() {
Toast.makeText(CRMDetail.this, StringUtils.capitalizeString(record.getString("type"))
+ " marked " + wonLost, Toast.LENGTH_LONG).show();
finish();
}
@Override
public void OnCancelled() {
}
};
CRMLead.OnOperationSuccessListener convertDoneListener = new CRMLead.OnOperationSuccessListener() {
@Override
public void OnSuccess() {
Toast.makeText(CRMDetail.this, R.string.label_convert_to_opportunity, Toast.LENGTH_LONG).show();
Intent intent = new Intent(CRMDetail.this, CRMDetail.class);
intent.putExtra(OColumn.ROW_ID, record.getInt(OColumn.ROW_ID));
startActivity(intent);
finish();
}
@Override
public void OnCancelled() {
}
};
}
================================================
FILE: app/src/main/java/com/odoo/addons/crm/CRMLeads.java
================================================
/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 13/1/15 10:24 AM
*/
package com.odoo.addons.crm;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SwipeRefreshLayout;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.odoo.addons.crm.models.CRMLead;
import com.odoo.addons.customers.Customers;
import com.odoo.base.addons.res.ResPartner;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.support.addons.fragment.BaseFragment;
import com.odoo.core.support.addons.fragment.IOnSearchViewChangeListener;
import com.odoo.core.support.addons.fragment.ISyncStatusObserverListener;
import com.odoo.core.support.drawer.ODrawerItem;
import com.odoo.core.support.list.IOnItemClickListener;
import com.odoo.core.support.list.OCursorListAdapter;
import com.odoo.core.utils.IntentUtils;
import com.odoo.core.utils.OAlert;
import com.odoo.core.utils.OControls;
import com.odoo.core.utils.OCursorUtils;
import com.odoo.core.utils.ODateUtils;
import com.odoo.core.utils.OResource;
import com.odoo.core.utils.StringUtils;
import com.odoo.core.utils.sys.IOnActivityResultListener;
import com.odoo.core.utils.sys.IOnBackPressListener;
import com.odoo.R;
import com.odoo.widgets.bottomsheet.BottomSheet;
import com.odoo.widgets.bottomsheet.BottomSheetListeners;
import java.util.ArrayList;
import java.util.List;
public class CRMLeads extends BaseFragment implements OCursorListAdapter.OnViewBindListener,
LoaderManager.LoaderCallbacks<Cursor>, SwipeRefreshLayout.OnRefreshListener,
ISyncStatusObserverListener, OCursorListAdapter.BeforeBindUpdateData,
IOnSearchViewChangeListener, View.OnClickListener, IOnItemClickListener,
BottomSheetListeners.OnSheetItemClickListener, BottomSheetListeners.OnSheetActionClickListener,
IOnBackPressListener, IOnActivityResultListener {
public static final String TAG = CRMLeads.class.getSimpleName();
public static final String KEY_MENU = "key_menu_item";
public static final int REQUEST_CONVERT_TO_OPPORTUNITY_WIZARD = 223;
public static final int REQUEST_CONVERT_TO_QUOTATION_WIZARD = 224;
public static final String KEY_IS_LEAD = "key_is_lead";
private View mView;
private int mLocal_id = 0;
private ListView mList;
private OCursorListAdapter mAdapter;
private BottomSheet mSheet = null;
private String mFilter = null;
private String wonLost = "won";
private boolean syncRequested = false;
// Customer's data filter
private boolean filter_customer_data = false;
private int customer_id = -1;
private ODataRow convertRequestRecord = null;
private Bundle syncBundle = new Bundle();
public enum Type {
Leads, Opportunities
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.common_listview, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mView = view;
parent().setOnBackPressListener(this);
parent().setOnActivityResultListener(this);
Bundle extra = getArguments();
if (extra != null && extra.containsKey(Customers.KEY_FILTER_REQUEST)) {
filter_customer_data = true;
customer_id = extra.getInt(Customers.KEY_CUSTOMER_ID);
mView.findViewById(R.id.customer_filterContainer).setVisibility(View.VISIBLE);
OControls.setText(mView, R.id.customer_name, extra.getString("name"));
mView.findViewById(R.id.cancel_filter).setOnClickListener(this);
}
setHasSyncStatusObserver(TAG, this, db());
initAdapter();
}
private void initAdapter() {
mList = (ListView) mView.findViewById(R.id.listview);
mAdapter = new OCursorListAdapter(getActivity(), null, R.layout.crm_item);
mAdapter.setOnViewBindListener(this);
mList.setAdapter(mAdapter);
setHasFloatingButton(mView, R.id.fabButton, mList, this);
mAdapter.handleItemClickListener(mList, this);
getLoaderManager().initLoader(0, null, this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cancel_filter:
getActivity().getSupportFragmentManager().popBackStack();
break;
case R.id.fabButton:
Bundle type = new Bundle();
type.putString("type", Type.Leads.toString());
IntentUtils.startActivity(getActivity(), CRMDetail.class, type);
break;
}
}
@Override
public ODataRow updateDataRow(Cursor cr) {
return db().browse(new String[]{"stage_id"},
cr.getInt(cr.getColumnIndex(OColumn.ROW_ID)));
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle data) {
String where = " type = ?";
String[] whereArgs;
List<String> args = new ArrayList<>();
args.add("lead");
if (mFilter != null) {
where += " and (name like ? or description like ? or display_name like ? " +
"or stage_name like ? or title_action like ?)";
args.add("%" + mFilter + "%");
args.add("%" + mFilter + "%");
args.add("%" + mFilter + "%");
args.add("%" + mFilter + "%");
args.add("%" + mFilter + "%");
}
if (filter_customer_data) {
where += " and partner_id = ?";
args.add(customer_id + "");
}
whereArgs = args.toArray(new String[args.size()]);
return new CursorLoader(getActivity(), db().uri(), null, where, whereArgs, "create_date DESC");
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.changeCursor(data);
if (data.getCount() > 0) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
OControls.setGone(mView, R.id.loadingProgress);
OControls.setVisible(mView, R.id.swipe_container);
OControls.setGone(mView, R.id.customer_no_items);
setHasSwipeRefreshView(mView, R.id.swipe_container, CRMLeads.this);
}
}, 500);
} else {
if (db().isEmptyTable() && !syncRequested) {
syncRequested = true;
onRefresh();
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
OControls.setGone(mView, R.id.loadingProgress);
OControls.setGone(mView, R.id.swipe_container);
OControls.setVisible(mView, R.id.customer_no_items);
setHasSwipeRefreshView(mView, R.id.customer_no_items, CRMLeads.this);
OControls.setImage(mView, R.id.icon, R.drawable.ic_action_leads
);
OControls.setText(mView, R.id.title, "No Leads Found");
OControls.setText(mView, R.id.subTitle, "");
}
}, 500);
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.changeCursor(null);
}
@Override
public void onViewBind(View view, Cursor cursor, ODataRow row) {
OControls.setText(view, R.id.name, row.getString("name"));
OControls.setText(view, R.id.stage, row.getString("stage_name"));
OControls.setText(view, R.id.display_name, row.getString("display_name"));
OControls.setText(view, R.id.assignee_name, row.getString("assignee_name"));
String date = ODateUtils.convertToDefault(row.getString("create_date"),
ODateUtils.DEFAULT_FORMAT, "MMMM, dd");
OControls.setText(view, R.id.create_date, date);
syncBundle.putBoolean(KEY_IS_LEAD, true);
view.findViewById(R.id.opportunity_controls).setVisibility(View.GONE);
}
@Override
public List<ODrawerItem> drawerMenus(Context context) {
List<ODrawerItem> menu = new ArrayList<>();
menu.add(new ODrawerItem(TAG)
.setTitle(OResource.string(context, R.string.label_leads))
.setInstance(new CRMLeads())
.setIcon(R.drawable.ic_action_leads)
.setExtra(data(Type.Leads)));
menu.add(new ODrawerItem(TAG)
.setTitle(OResource.string(context, R.string.label_opportunities))
.setInstance(new CRMOpportunitiesPager())
.setIcon(R.drawable.ic_action_opportunities)
.setExtra(data(Type.Opportunities)));
return menu;
}
private Bundle data(Type type) {
Bundle extra = new Bundle();
extra.putString(KEY_MENU, type.toString());
return extra;
}
@Override
public Class<CRMLead> database() {
return CRMLead.class;
}
@Override
public void onRefresh() {
if (inNetwork()) {
parent().sync().requestSync(CRMLead.AUTHORITY, syncBundle);
setSwipeRefreshing(true);
} else {
hideRefreshingProgress();
Toast.makeText(getActivity(), _s(R.string.toast_network_required), Toast.LENGTH_LONG)
.show();
}
}
@Override
public void onStatusChange(Boolean refreshing) {
getLoaderManager().restartLoader(0, null, this);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.menu_leads, menu);
setHasSearchView(this, menu, R.id.menu_lead_search);
}
@Override
public boolean onSearchViewTextChange(String newFilter) {
mFilter = newFilter;
getLoaderManager().restartLoader(0, null, this);
return true;
}
@Override
public void onSearchViewClose() {
// Nothing to do
}
@Override
public void onItemDoubleClick(View view, int position) {
ODataRow row = OCursorUtils.toDatarow((Cursor) mAdapter.getItem(position));
IntentUtils.startActivity(getActivity(), CRMDetail.class, row.getPrimaryBundleData());
}
@Override
public void onItemClick(View view, int position) {
showSheet((Cursor) mAdapter.getItem(position));
}
private void showSheet(Cursor data) {
BottomSheet.Builder builder = new BottomSheet.Builder(getActivity());
builder.listener(this);
builder.setIconColor(_c(R.color.body_text_2));
builder.setTextColor(_c(R.color.body_text_2));
builder.setData(data);
gitextract_1ybjx6vk/
├── .classpath
├── README.md
├── app/
│ ├── .gitignore
│ ├── app-release.apk
│ ├── build.gradle
│ ├── crm-app-release.apk
│ ├── libs/
│ │ └── swipe_library.jar
│ ├── manifest-merger-release-report.txt
│ ├── proguard-rules.pro
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ ├── com/
│ │ │ └── odoo/
│ │ │ ├── App.java
│ │ │ ├── OdooActivity.java
│ │ │ ├── SettingsActivity.java
│ │ │ ├── addons/
│ │ │ │ ├── calendar/
│ │ │ │ │ ├── CalendarDashboard.java
│ │ │ │ │ ├── EventDetail.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ └── CalendarEvent.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CalendarSyncProvider.java
│ │ │ │ │ ├── services/
│ │ │ │ │ │ └── CalendarSyncService.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── CalendarUtils.java
│ │ │ │ │ ├── EventColorDialog.java
│ │ │ │ │ ├── ReminderDialog.java
│ │ │ │ │ └── TodayIcon.java
│ │ │ │ ├── crm/
│ │ │ │ │ ├── CRMDetail.java
│ │ │ │ │ ├── CRMLeads.java
│ │ │ │ │ ├── CRMOpportunities.java
│ │ │ │ │ ├── CRMOpportunitiesPager.java
│ │ │ │ │ ├── ConvertToOpportunityWizard.java
│ │ │ │ │ ├── ConvertToQuotation.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── CRMCaseCateg.java
│ │ │ │ │ │ ├── CRMCaseStage.java
│ │ │ │ │ │ └── CRMLead.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CRMLeadProvider.java
│ │ │ │ │ └── services/
│ │ │ │ │ └── CRMLeadSyncService.java
│ │ │ │ ├── customers/
│ │ │ │ │ ├── CustomerDetails.java
│ │ │ │ │ ├── Customers.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── CustomersSyncProvider.java
│ │ │ │ │ ├── services/
│ │ │ │ │ │ └── CustomerSyncService.java
│ │ │ │ │ └── utils/
│ │ │ │ │ └── ShareUtil.java
│ │ │ │ ├── phonecall/
│ │ │ │ │ ├── PhoneCallDetail.java
│ │ │ │ │ ├── PhoneCalls.java
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── CallerWindow.java
│ │ │ │ │ │ ├── CustomerFinder.java
│ │ │ │ │ │ ├── IOnCustomerFindListener.java
│ │ │ │ │ │ └── receivers/
│ │ │ │ │ │ └── PhoneStateReceiver.java
│ │ │ │ │ ├── models/
│ │ │ │ │ │ ├── CRMPhoneCalls.java
│ │ │ │ │ │ └── CRMPhoneCallsCategory.java
│ │ │ │ │ ├── providers/
│ │ │ │ │ │ └── PhoneCallProvider.java
│ │ │ │ │ └── services/
│ │ │ │ │ └── PhoneCallSyncService.java
│ │ │ │ └── sale/
│ │ │ │ ├── AddProductLineWizard.java
│ │ │ │ ├── Sales.java
│ │ │ │ ├── SalesDetail.java
│ │ │ │ ├── models/
│ │ │ │ │ ├── AccountPaymentTerm.java
│ │ │ │ │ ├── ProductProduct.java
│ │ │ │ │ ├── SaleOrder.java
│ │ │ │ │ └── SalesOrderLine.java
│ │ │ │ ├── providers/
│ │ │ │ │ └── SaleOrderProvider.java
│ │ │ │ └── services/
│ │ │ │ └── SaleOrderSyncService.java
│ │ │ ├── base/
│ │ │ │ └── addons/
│ │ │ │ ├── BaseModels.java
│ │ │ │ ├── ir/
│ │ │ │ │ ├── IrAttachment.java
│ │ │ │ │ ├── IrModel.java
│ │ │ │ │ ├── feature/
│ │ │ │ │ │ └── OFileManager.java
│ │ │ │ │ └── providers/
│ │ │ │ │ └── IrModelProvider.java
│ │ │ │ ├── mail/
│ │ │ │ │ ├── MailMessage.java
│ │ │ │ │ ├── MailMessageSubType.java
│ │ │ │ │ └── widget/
│ │ │ │ │ ├── MailChatterCompose.java
│ │ │ │ │ ├── MailChatterView.java
│ │ │ │ │ ├── MailDetailDialog.java
│ │ │ │ │ └── MessageObserver.java
│ │ │ │ └── res/
│ │ │ │ ├── ResCompany.java
│ │ │ │ ├── ResCountry.java
│ │ │ │ ├── ResCurrency.java
│ │ │ │ ├── ResPartner.java
│ │ │ │ └── ResUsers.java
│ │ │ ├── config/
│ │ │ │ ├── Addons.java
│ │ │ │ ├── BaseConfig.java
│ │ │ │ └── IntroSliderItems.java
│ │ │ ├── core/
│ │ │ │ ├── account/
│ │ │ │ │ ├── About.java
│ │ │ │ │ ├── AppIntro.java
│ │ │ │ │ ├── BaseSettings.java
│ │ │ │ │ ├── ManageAccounts.java
│ │ │ │ │ ├── OdooAccountQuickManage.java
│ │ │ │ │ ├── OdooLogin.java
│ │ │ │ │ ├── OdooUserAskPassword.java
│ │ │ │ │ └── Profile.java
│ │ │ │ ├── auth/
│ │ │ │ │ ├── OdooAccountManager.java
│ │ │ │ │ ├── OdooAuthService.java
│ │ │ │ │ └── OdooAuthenticator.java
│ │ │ │ ├── orm/
│ │ │ │ │ ├── ODataRow.java
│ │ │ │ │ ├── OM2MRecord.java
│ │ │ │ │ ├── OM2ORecord.java
│ │ │ │ │ ├── OModel.java
│ │ │ │ │ ├── OModelRegistry.java
│ │ │ │ │ ├── OO2MRecord.java
│ │ │ │ │ ├── OSQLHelper.java
│ │ │ │ │ ├── OSQLite.java
│ │ │ │ │ ├── OValues.java
│ │ │ │ │ ├── ServerDataHelper.java
│ │ │ │ │ ├── annotation/
│ │ │ │ │ │ └── Odoo.java
│ │ │ │ │ ├── fields/
│ │ │ │ │ │ ├── OColumn.java
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ ├── OBlob.java
│ │ │ │ │ │ ├── OBoolean.java
│ │ │ │ │ │ ├── ODate.java
│ │ │ │ │ │ ├── ODateTime.java
│ │ │ │ │ │ ├── OFloat.java
│ │ │ │ │ │ ├── OHtml.java
│ │ │ │ │ │ ├── OInteger.java
│ │ │ │ │ │ ├── OSelection.java
│ │ │ │ │ │ ├── OText.java
│ │ │ │ │ │ ├── OTimestamp.java
│ │ │ │ │ │ ├── OTypeHelper.java
│ │ │ │ │ │ └── OVarchar.java
│ │ │ │ │ └── provider/
│ │ │ │ │ └── BaseModelProvider.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── ISyncFinishListener.java
│ │ │ │ │ ├── ISyncServiceListener.java
│ │ │ │ │ ├── OSyncAdapter.java
│ │ │ │ │ ├── OSyncDataUtils.java
│ │ │ │ │ ├── OSyncService.java
│ │ │ │ │ └── receivers/
│ │ │ │ │ └── ISyncFinishReceiver.java
│ │ │ │ ├── support/
│ │ │ │ │ ├── OUser.java
│ │ │ │ │ ├── OdooFields.java
│ │ │ │ │ ├── OdooInstancesSelectorDialog.java
│ │ │ │ │ ├── OdooLoginHelper.java
│ │ │ │ │ ├── OdooServerTester.java
│ │ │ │ │ ├── OdooUserLoginSelectorDialog.java
│ │ │ │ │ ├── addons/
│ │ │ │ │ │ ├── AddonsHelper.java
│ │ │ │ │ │ ├── OAddon.java
│ │ │ │ │ │ └── fragment/
│ │ │ │ │ │ ├── BaseFragment.java
│ │ │ │ │ │ ├── IBaseFragment.java
│ │ │ │ │ │ ├── IOnSearchViewChangeListener.java
│ │ │ │ │ │ └── ISyncStatusObserverListener.java
│ │ │ │ │ ├── drawer/
│ │ │ │ │ │ └── ODrawerItem.java
│ │ │ │ │ ├── list/
│ │ │ │ │ │ ├── IOnItemClickListener.java
│ │ │ │ │ │ ├── OCursorListAdapter.java
│ │ │ │ │ │ └── OListAdapter.java
│ │ │ │ │ └── sync/
│ │ │ │ │ └── SyncUtils.java
│ │ │ │ └── utils/
│ │ │ │ ├── BitmapUtils.java
│ │ │ │ ├── IntentUtils.java
│ │ │ │ ├── JSONUtils.java
│ │ │ │ ├── OActionBarUtils.java
│ │ │ │ ├── OAlert.java
│ │ │ │ ├── OAlertDialog.java
│ │ │ │ ├── OControls.java
│ │ │ │ ├── OCursorUtils.java
│ │ │ │ ├── ODateUtils.java
│ │ │ │ ├── OFragmentUtils.java
│ │ │ │ ├── OListUtils.java
│ │ │ │ ├── OPreferenceManager.java
│ │ │ │ ├── OResource.java
│ │ │ │ ├── OStorageUtils.java
│ │ │ │ ├── OStringColorUtil.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── controls/
│ │ │ │ │ └── ExpandableHeightGridView.java
│ │ │ │ ├── dialog/
│ │ │ │ │ └── OChoiceDialog.java
│ │ │ │ ├── drawer/
│ │ │ │ │ ├── DrawerUtils.java
│ │ │ │ │ └── ODrawerScrollView.java
│ │ │ │ ├── logger/
│ │ │ │ │ └── OLog.java
│ │ │ │ ├── notification/
│ │ │ │ │ └── ONotificationBuilder.java
│ │ │ │ ├── reminder/
│ │ │ │ │ ├── ReminderActionReceiver.java
│ │ │ │ │ ├── ReminderReceiver.java
│ │ │ │ │ └── ReminderUtils.java
│ │ │ │ └── sys/
│ │ │ │ ├── IOnActivityResultListener.java
│ │ │ │ ├── IOnBackPressListener.java
│ │ │ │ └── OCacheUtils.java
│ │ │ ├── datas/
│ │ │ │ └── OConstants.java
│ │ │ ├── news/
│ │ │ │ ├── News.java
│ │ │ │ ├── NewsDetail.java
│ │ │ │ ├── OdooNewsReceiver.java
│ │ │ │ └── models/
│ │ │ │ └── OdooNews.java
│ │ │ └── server/
│ │ │ └── notifications/
│ │ │ └── OdooServerNotificationReceiver.java
│ │ └── odoo/
│ │ └── controls/
│ │ ├── BezelImageView.java
│ │ ├── DateTimePicker.java
│ │ ├── ExpandableListControl.java
│ │ ├── ExpandableListOperationListener.java
│ │ ├── IOControlData.java
│ │ ├── IOnChangeCallback.java
│ │ ├── IOnDomainFilterCallbacks.java
│ │ ├── IOnQuickRecordCreateListener.java
│ │ ├── OBlobField.java
│ │ ├── OBooleanField.java
│ │ ├── OControlHelper.java
│ │ ├── ODateTimeField.java
│ │ ├── OEditTextField.java
│ │ ├── OField.java
│ │ ├── OForm.java
│ │ ├── OSelectionField.java
│ │ ├── SearchableItemActivity.java
│ │ └── fab/
│ │ ├── DirectionScrollListener.java
│ │ └── FloatingActionButton.java
│ └── res/
│ ├── drawable/
│ │ ├── circle_mask.xml
│ │ ├── circle_mask_gray.xml
│ │ ├── circle_mask_primary.xml
│ │ ├── circle_mask_secondary.xml
│ │ ├── drawer_background_cover.xml
│ │ ├── icon_bg_oval_blue.xml
│ │ ├── icon_bg_oval_green.xml
│ │ ├── icon_bg_oval_orange.xml
│ │ ├── icon_bg_oval_red.xml
│ │ ├── icon_bg_oval_violet.xml
│ │ ├── login_signup_button.xml
│ │ ├── login_signup_button_clicked.xml
│ │ ├── login_signup_button_normal.xml
│ │ ├── login_signup_control_bg.xml
│ │ └── tag_background.xml
│ ├── layout/
│ │ ├── activity_app_intro.xml
│ │ ├── base_about.xml
│ │ ├── base_account_ask_pass.xml
│ │ ├── base_account_item.xml
│ │ ├── base_account_quick_manage.xml
│ │ ├── base_attachment_item.xml
│ │ ├── base_control_searchable_layout.xml
│ │ ├── base_control_template.xml
│ │ ├── base_drawer.xml
│ │ ├── base_drawer_account_item.xml
│ │ ├── base_drawer_group_layout.xml
│ │ ├── base_drawer_menu_item.xml
│ │ ├── base_instance_item.xml
│ │ ├── base_intro_slider_view.xml
│ │ ├── base_login.xml
│ │ ├── base_mail_chatter.xml
│ │ ├── base_mail_chatter_item.xml
│ │ ├── base_mail_chatter_message_compose.xml
│ │ ├── base_mail_chatter_message_detail.xml
│ │ ├── base_manage_accounts.xml
│ │ ├── base_no_items_view.xml
│ │ ├── base_no_items_view.xml~
│ │ ├── base_profile.xml
│ │ ├── base_setting_activity.xml
│ │ ├── base_simple_list_item_1.xml
│ │ ├── base_simple_list_item_1_selected.xml
│ │ ├── base_toolbar.xml
│ │ ├── calendar_dashboard.xml
│ │ ├── calendar_dashboard_item_separator.xml
│ │ ├── calendar_dashboard_item_view.xml
│ │ ├── calendar_dashboard_items.xml
│ │ ├── calendar_event_detail_form.xml
│ │ ├── common_listview.xml
│ │ ├── crm_caller_window_layout.xml
│ │ ├── crm_convert_to_opportunity.xml
│ │ ├── crm_convert_to_opportunity_item.xml
│ │ ├── crm_convert_to_quotation.xml
│ │ ├── crm_detail.xml
│ │ ├── crm_item.xml
│ │ ├── crm_opportunity_pagger.xml
│ │ ├── crm_phonecall_detail.xml
│ │ ├── customer_detail.xml
│ │ ├── customer_filter_container.xml
│ │ ├── customer_row_item.xml
│ │ ├── event_color_chooser_item.xml
│ │ ├── event_color_grid.xml
│ │ ├── listview_data_loading_progress.xml
│ │ ├── news_detail.xml
│ │ ├── news_list.xml
│ │ ├── odoo_activity.xml
│ │ ├── odoo_news.xml
│ │ ├── phonecall_item.xml
│ │ ├── reminder_custom_dialog_view.xml
│ │ ├── reminder_item_view.xml
│ │ ├── sale_add_item.xml
│ │ ├── sale_detail.xml
│ │ ├── sale_order_item.xml
│ │ ├── sale_order_line_item.xml
│ │ └── sale_product_line_item.xml
│ ├── menu/
│ │ ├── menu_about.xml
│ │ ├── menu_base_login.xml
│ │ ├── menu_calendar_dashboard.xml
│ │ ├── menu_calendar_detail.xml
│ │ ├── menu_customer_detail.xml
│ │ ├── menu_dashboard_events.xml
│ │ ├── menu_dashboard_opportunity.xml
│ │ ├── menu_dashboard_phonecalls.xml
│ │ ├── menu_lead_detail.xml
│ │ ├── menu_lead_list_sheet.xml
│ │ ├── menu_leads.xml
│ │ ├── menu_opp_list_sheet.xml
│ │ ├── menu_partners.xml
│ │ ├── menu_phonecall_detail.xml
│ │ ├── menu_phonecalls.xml
│ │ ├── menu_quotation_cancel_sheet.xml
│ │ ├── menu_quotation_sheet.xml
│ │ ├── menu_sale_add_item.xml
│ │ ├── menu_sale_detail.xml
│ │ ├── menu_sales_order.xml
│ │ ├── menu_sheet_customer.xml
│ │ └── menu_so_sheet.xml
│ ├── values/
│ │ ├── attrs.xml
│ │ ├── base-strings.xml
│ │ ├── bool.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── fonts.xml
│ │ ├── strings.xml
│ │ ├── strings.xml~
│ │ ├── styles.xml
│ │ └── theme-values.xml
│ ├── values-v19/
│ │ └── bool.xml
│ ├── values-v21/
│ │ ├── colors.xml
│ │ ├── styles.xml
│ │ └── theme-values.xml
│ ├── values-w820dp/
│ │ └── dimens.xml
│ └── xml/
│ ├── authenticator.xml
│ ├── base_preference.xml
│ ├── calendar_sync_adapter.xml
│ ├── crm_sync_adapter.xml
│ ├── customer_sync_adapter.xml
│ ├── phonecall_sync_adapter.xml
│ └── sale_sync_adapter.xml
├── bottom-sheet-lib/
│ ├── bottom-sheet-lib.aar
│ ├── bottom-sheet-lib.iml
│ └── build.gradle
├── build.gradle
├── calendar-lib/
│ ├── build.gradle
│ ├── calendar-lib.aar
│ └── calendar-lib.iml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── intro-slider-lib/
│ ├── app.iml
│ ├── build.gradle
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── java/
│ │ └── com/
│ │ └── odoo/
│ │ ├── widget/
│ │ │ └── slider/
│ │ │ └── navigator/
│ │ │ └── PagerNavigatorAdapter.java
│ │ └── widgets/
│ │ └── slider/
│ │ ├── SliderHelper.java
│ │ ├── SliderItem.java
│ │ ├── SliderPagerAdapter.java
│ │ └── SliderView.java
│ └── res/
│ ├── drawable/
│ │ └── intro_slider_dot_bg.xml
│ ├── layout/
│ │ ├── default_ui.xml
│ │ └── slider_default_view.xml
│ ├── values/
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ ├── values-v11/
│ │ └── styles.xml
│ └── values-v14/
│ └── styles.xml
├── local.properties
├── master-crm-studio-dpr.iml
├── odoo-rpc-v2/
│ ├── build.gradle
│ └── odoo-rpc-v2.aar
├── parallax-effect-lib/
│ ├── build.gradle
│ └── parallax-effect-lib.aar
├── settings.gradle
└── snackbar-lib/
├── build.gradle
├── snackbar-lib.aar
└── snackbar-lib.iml
SYMBOL INDEX (1993 symbols across 182 files)
FILE: app/src/main/java/com/odoo/App.java
class App (line 37) | public class App extends Application {
method onCreate (line 42) | @Override
method getOdoo (line 47) | public Odoo getOdoo(OUser user) {
method setOdoo (line 54) | public void setOdoo(Odoo odoo, OUser user) {
method inNetwork (line 64) | public boolean inNetwork() {
method appInstalled (line 80) | public boolean appInstalled(String appPackage) {
method meOnTop (line 97) | public boolean meOnTop() {
FILE: app/src/main/java/com/odoo/OdooActivity.java
class OdooActivity (line 73) | public class OdooActivity extends ActionBarActivity {
method onCreate (line 100) | @Override
method setupDrawer (line 121) | private void setupDrawer() {
method setupDrawerBox (line 158) | private void setupDrawerBox() {
method onClick (line 175) | @Override
method closeDrawer (line 191) | public void closeDrawer() {
method loadDrawerItemInstance (line 206) | private void loadDrawerItemInstance(Object instance, Bundle extra) {
method loadFragment (line 236) | public void loadFragment(Fragment fragment, Boolean addToBackState, Bu...
method setupAccountBox (line 240) | private void setupAccountBox() {
method accountBoxToggle (line 283) | private void accountBoxToggle() {
method populateAccountList (line 349) | private void populateAccountList(OUser me, List<OUser> accounts) {
method restartActivity (line 404) | private void restartActivity() {
method accountListDefaultItems (line 415) | private void accountListDefaultItems() {
method generateView (line 443) | private View generateView(String title, int res_id) {
method onConfigurationChanged (line 457) | @Override
method onOptionsItemSelected (line 465) | @Override
method onBackPressed (line 473) | @Override
method onActivityResult (line 483) | @Override
method setOnBackPressListener (line 511) | public void setOnBackPressListener(IOnBackPressListener listener) {
method setOnActivityResultListener (line 515) | public void setOnActivityResultListener(IOnActivityResultListener list...
method onPostCreate (line 519) | @Override
method focusOnDrawerItem (line 549) | private void focusOnDrawerItem(int index) {
method onSaveInstanceState (line 556) | @Override
method sync (line 565) | public SyncUtils sync() {
method setHasActionBarSpinner (line 573) | public void setHasActionBarSpinner(Boolean hasActionBarSpinner) {
method getActionBarSpinner (line 590) | public Spinner getActionBarSpinner() {
method refreshDrawer (line 599) | public void refreshDrawer() {
FILE: app/src/main/java/com/odoo/SettingsActivity.java
class SettingsActivity (line 43) | public class SettingsActivity extends ActionBarActivity {
method onCreate (line 47) | @Override
method startActivity (line 58) | @Override
method onOptionsItemSelected (line 69) | @Override
method onDetachedFromWindow (line 78) | @Override
method settingUpdated (line 84) | private void settingUpdated() {
FILE: app/src/main/java/com/odoo/addons/calendar/CalendarDashboard.java
class CalendarDashboard (line 95) | public class CalendarDashboard extends BaseFragment implements View.OnCl...
type SheetType (line 124) | private enum SheetType {
type FilterType (line 128) | private enum FilterType {
method FilterType (line 133) | FilterType(int type) {
method getString (line 137) | public String getString(Context context) {
method onCreateView (line 142) | @Override
method onViewCreated (line 149) | @Override
method initActionSpinner (line 164) | private void initActionSpinner() {
method onNothingSelected (line 204) | @Override
method onItemSelected (line 209) | @Override
method getSpinnerView (line 217) | private View getSpinnerView(Object row, int pos, View view, ViewGroup ...
method weekDataInfo (line 223) | @Override
method getEventsView (line 267) | @Override
method initAdapter (line 284) | private void initAdapter() {
method onItemDoubleClick (line 297) | @Override
method onItemClick (line 311) | @Override
method showSheet (line 326) | private void showSheet(SheetType type, Cursor data) {
method onSheetActionClick (line 355) | @Override
method onSheetMenuCreate (line 386) | @Override
method onViewCreated (line 402) | @Override
method updateDataRow (line 413) | @Override
method onViewBind (line 425) | @Override
method onCreateLoader (line 522) | @Override
method onLoadFinished (line 572) | @Override
method onLoaderReset (line 601) | @Override
method drawerMenus (line 606) | @Override
method database (line 615) | @Override
method onClick (line 620) | @Override
method onItemClick (line 630) | @Override
method actionEvent (line 636) | private void actionEvent(MenuItem menu, Cursor cr) {
method OnSuccess (line 789) | @Override
method OnCancelled (line 795) | @Override
method dismissSheet (line 801) | private void dismissSheet(final BottomSheet sheet) {
method onBackPressed (line 811) | @Override
method onRefresh (line 821) | @Override
method onStatusChange (line 839) | @Override
method onShow (line 845) | @Override
method onDismiss (line 850) | @Override
method onCreateOptionsMenu (line 855) | @Override
method onOptionsItemSelected (line 866) | @Override
method onSearchViewTextChange (line 876) | @Override
method onSearchViewClose (line 883) | @Override
method createEvent (line 888) | private void createEvent() {
method onOdooActivityResult (line 894) | @Override
method OnSuccess (line 905) | @Override
method OnCancelled (line 912) | @Override
FILE: app/src/main/java/com/odoo/addons/calendar/EventDetail.java
class EventDetail (line 57) | public class EventDetail extends ActionBarActivity implements View.OnCli...
method onCreate (line 75) | @Override
method onClick (line 163) | @Override
method onSaveInstanceState (line 196) | @Override
method colorSelected (line 203) | @Override
method setThemeColor (line 217) | private void setThemeColor(String color_code) {
method onCreateOptionsMenu (line 223) | @Override
method onOptionsItemSelected (line 229) | @Override
method createMeeting (line 245) | private void createMeeting(OValues values) {
method onCheckedChanged (line 332) | public void onCheckedChanged(boolean isChecked) {
method onFieldValueChange (line 347) | @Override
method onReminderItemSelect (line 359) | @Override
FILE: app/src/main/java/com/odoo/addons/calendar/models/CalendarEvent.java
class CalendarEvent (line 46) | public class CalendarEvent extends OModel {
method CalendarEvent (line 113) | public CalendarEvent(Context context, OUser user) {
method defaultDomain (line 127) | @Override
method uri (line 141) | @Override
method agendaUri (line 146) | public Uri agendaUri() {
method storeStartDate (line 150) | public String storeStartDate(OValues value) {
method storeStopDate (line 159) | public String storeStopDate(OValues value) {
FILE: app/src/main/java/com/odoo/addons/calendar/providers/CalendarSyncProvider.java
class CalendarSyncProvider (line 37) | public class CalendarSyncProvider extends BaseModelProvider {
method onCreate (line 41) | @Override
method setModel (line 49) | @Override
method query (line 55) | @Override
method authority (line 138) | @Override
FILE: app/src/main/java/com/odoo/addons/calendar/services/CalendarSyncService.java
class CalendarSyncService (line 42) | public class CalendarSyncService extends OSyncService implements ISyncFi...
method getSyncAdapter (line 46) | @Override
method performDataSync (line 51) | @Override
method performNextSync (line 59) | @Override
FILE: app/src/main/java/com/odoo/addons/calendar/utils/CalendarUtils.java
class CalendarUtils (line 28) | public class CalendarUtils {
method getBackgroundColors (line 37) | public static String[] getBackgroundColors() {
method getColorLabels (line 41) | public static String[] getColorLabels() {
method getBackgroundColor (line 45) | public static int getBackgroundColor(int color_number) {
method getColorLabel (line 52) | public static String getColorLabel(int color_number) {
method getColorData (line 59) | public static ODataRow getColorData(int index) {
method colorDialog (line 67) | public static AlertDialog colorDialog(Context context, String selected,
FILE: app/src/main/java/com/odoo/addons/calendar/utils/EventColorDialog.java
class EventColorDialog (line 42) | public class EventColorDialog implements AdapterView.OnItemClickListener {
method EventColorDialog (line 52) | public EventColorDialog(Context context, String selected_color,
method build (line 68) | public AlertDialog build() {
method getColorGrid (line 75) | private View getColorGrid() {
method initGrid (line 82) | private void initGrid(GridView view) {
type OnColorSelectListener (line 120) | public interface OnColorSelectListener {
method colorSelected (line 121) | public void colorSelected(ODataRow color_data);
method onItemClick (line 124) | @Override
FILE: app/src/main/java/com/odoo/addons/calendar/utils/ReminderDialog.java
class ReminderDialog (line 43) | public class ReminderDialog implements AdapterView.OnItemClickListener {
type ReminderType (line 55) | public enum ReminderType {
method ReminderDialog (line 59) | public ReminderDialog(Context context, ReminderType type) {
method getReminderTypes (line 100) | public List<Object> getReminderTypes() {
method show (line 104) | public void show() {
method getDefault (line 111) | public static ReminderItem getDefault(Context context, boolean allDay) {
method generateView (line 117) | private View generateView() {
method getReminderDateTime (line 138) | public static Date getReminderDateTime(String eventDateTime, Boolean a...
method onItemClick (line 168) | @Override
method setOnReminderValueSelectListener (line 187) | public void setOnReminderValueSelectListener(OnReminderValueSelectList...
type OnReminderValueSelectListener (line 191) | public interface OnReminderValueSelectListener {
method onReminderItemSelect (line 192) | public void onReminderItemSelect(ReminderItem value);
class ReminderItem (line 195) | public static class ReminderItem {
method ReminderItem (line 200) | public ReminderItem(int request_code, String title, Object value) {
method getRequest_code (line 206) | public int getRequest_code() {
method setRequest_code (line 210) | public void setRequest_code(int request_code) {
method getTitle (line 214) | public String getTitle() {
method setTitle (line 218) | public void setTitle(String title) {
method getValue (line 222) | public Object getValue() {
method setValue (line 226) | public void setValue(Object value) {
FILE: app/src/main/java/com/odoo/addons/calendar/utils/TodayIcon.java
class TodayIcon (line 40) | public class TodayIcon {
method TodayIcon (line 49) | public TodayIcon(Context context) {
method date (line 54) | private int date() {
method get (line 59) | public static TodayIcon get(Context context) {
method getIcon (line 63) | public Drawable getIcon() {
method generate (line 75) | private Bitmap generate(int width, int height) {
FILE: app/src/main/java/com/odoo/addons/crm/CRMDetail.java
class CRMDetail (line 57) | public class CRMDetail extends ActionBarActivity {
method onCreate (line 72) | @Override
method init (line 83) | private void init() {
method initFormValues (line 108) | private void initFormValues() {
method onCreateOptionsMenu (line 127) | @Override
method toggleMenu (line 135) | private void toggleMenu() {
method onOptionsItemSelected (line 153) | @Override
method onActivityResult (line 249) | @Override
method OnSuccess (line 263) | @Override
method OnCancelled (line 273) | @Override
method OnSuccess (line 279) | @Override
method OnCancelled (line 286) | @Override
method OnSuccess (line 292) | @Override
method OnCancelled (line 302) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/CRMLeads.java
class CRMLeads (line 70) | public class CRMLeads extends BaseFragment implements OCursorListAdapter...
type Type (line 96) | public enum Type {
method onCreateView (line 100) | @Override
method onViewCreated (line 107) | @Override
method initAdapter (line 125) | private void initAdapter() {
method onClick (line 135) | @Override
method updateDataRow (line 150) | @Override
method onCreateLoader (line 156) | @Override
method onLoadFinished (line 180) | @Override
method onLoaderReset (line 214) | @Override
method onViewBind (line 219) | @Override
method drawerMenus (line 232) | @Override
method data (line 249) | private Bundle data(Type type) {
method database (line 255) | @Override
method onRefresh (line 260) | @Override
method onStatusChange (line 272) | @Override
method onCreateOptionsMenu (line 277) | @Override
method onSearchViewTextChange (line 285) | @Override
method onSearchViewClose (line 292) | @Override
method onItemDoubleClick (line 297) | @Override
method onItemClick (line 303) | @Override
method showSheet (line 308) | private void showSheet(Cursor data) {
method onSheetActionClick (line 323) | @Override
method onItemClick (line 330) | @Override
method onOdooActivityResult (line 403) | @Override
method OnSuccess (line 414) | @Override
method OnCancelled (line 420) | @Override
method OnSuccess (line 426) | @Override
method OnCancelled (line 434) | @Override
method onBackPressed (line 440) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/CRMOpportunities.java
class CRMOpportunities (line 56) | public class CRMOpportunities extends BaseFragment implements OCursorLis...
method onCreateView (line 83) | @Override
method onViewCreated (line 90) | @Override
method initAdapter (line 113) | private void initAdapter() {
method onClick (line 125) | @Override
method updateDataRow (line 172) | @Override
method onCreateLoader (line 178) | @Override
method onLoadFinished (line 203) | @Override
method onLoaderReset (line 237) | @Override
method onViewBind (line 242) | @Override
method drawerMenus (line 278) | @Override
method database (line 283) | @Override
method onRefresh (line 288) | @Override
method onStatusChange (line 300) | @Override
method onCreateOptionsMenu (line 305) | @Override
method onSearchViewTextChange (line 313) | @Override
method onSearchViewClose (line 320) | @Override
method onItemDoubleClick (line 325) | @Override
method onItemClick (line 332) | @Override
method showSheet (line 337) | private void showSheet(Cursor data) {
method onSheetActionClick (line 351) | @Override
method onItemClick (line 358) | @Override
method onOdooActivityResult (line 453) | @Override
method OnSuccess (line 466) | @Override
method OnCancelled (line 474) | @Override
method OnSuccess (line 480) | @Override
method OnCancelled (line 486) | @Override
method onBackPressed (line 492) | @Override
method onNavSpinnerDestroy (line 501) | @Override
method onDestroy (line 506) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/CRMOpportunitiesPager.java
class CRMOpportunitiesPager (line 64) | public class CRMOpportunitiesPager extends BaseFragment implements ViewP...
method onCreateView (line 88) | @Override
method onViewCreated (line 94) | @Override
method initSpinner (line 115) | private void initSpinner() {
method getSpinnerView (line 159) | private View getSpinnerView(Object row, int pos, View view, ViewGroup ...
method initPager (line 165) | private void initPager(View view) {
method initCR (line 187) | private void initCR() {
method onPageScrolled (line 192) | @Override
method onPageSelected (line 197) | @Override
method onPageScrollStateChanged (line 203) | @Override
method onItemSelected (line 208) | @Override
method onNothingSelected (line 213) | @Override
method onBackPressed (line 218) | @Override
method onRefresh (line 227) | @Override
class StagePagerAdapter (line 241) | private class StagePagerAdapter extends FragmentStatePagerAdapter {
method StagePagerAdapter (line 245) | public StagePagerAdapter(Cursor cursor, FragmentManager fm) {
method getPageTitle (line 250) | @Override
method getItem (line 269) | @Override
method restoreState (line 288) | @Override
method getCount (line 293) | @Override
method drawerMenus (line 300) | @Override
method database (line 305) | @Override
class DataObserver (line 310) | private class DataObserver extends ContentObserver {
method DataObserver (line 312) | public DataObserver(Handler handler) {
method onChange (line 316) | @SuppressLint("NewApi")
method onChange (line 322) | @SuppressLint("NewApi")
method updatePager (line 330) | public void updatePager() {
FILE: app/src/main/java/com/odoo/addons/crm/ConvertToOpportunityWizard.java
class ConvertToOpportunityWizard (line 45) | public class ConvertToOpportunityWizard extends ActionBarActivity implem...
method onCreate (line 56) | @Override
method init (line 75) | private void init() {
method onClick (line 110) | @Override
method onFieldValueChange (line 138) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/ConvertToQuotation.java
class ConvertToQuotation (line 37) | public class ConvertToQuotation extends ActionBarActivity implements Vie...
method onCreate (line 43) | @Override
method onClick (line 64) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/models/CRMCaseCateg.java
class CRMCaseCateg (line 29) | public class CRMCaseCateg extends OModel {
method CRMCaseCateg (line 33) | public CRMCaseCateg(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/addons/crm/models/CRMCaseStage.java
class CRMCaseStage (line 32) | public class CRMCaseStage extends OModel {
method CRMCaseStage (line 41) | public CRMCaseStage(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/addons/crm/models/CRMLead.java
class CRMLead (line 63) | public class CRMLead extends OModel {
method CRMLead (line 143) | public CRMLead(Context context, OUser user) {
method uri (line 153) | @Override
method partnerIdOnChange (line 158) | public ODataRow partnerIdOnChange(ODataRow row) {
method getDisplayName (line 225) | public String getDisplayName(OValues row) {
method storeAssigneeName (line 249) | public String storeAssigneeName(OValues vals) {
method storeStageName (line 261) | public String storeStageName(OValues values) {
method convertToOpportunity (line 272) | public void convertToOpportunity(final ODataRow lead, final List<Integ...
method _markWonLost (line 350) | private void _markWonLost(String type, ODataRow record) {
method setReminder (line 371) | public void setReminder(int row_id) {
method markWonLost (line 403) | public void markWonLost(final String type, final ODataRow record, fina...
method createQuotation (line 445) | public void createQuotation(final ODataRow lead, final String partnerI...
method defaultDomain (line 515) | @Override
type OnOperationSuccessListener (line 524) | public static interface OnOperationSuccessListener {
method OnSuccess (line 525) | public void OnSuccess();
method OnCancelled (line 527) | public void OnCancelled();
FILE: app/src/main/java/com/odoo/addons/crm/providers/CRMLeadProvider.java
class CRMLeadProvider (line 27) | public class CRMLeadProvider extends BaseModelProvider {
method setModel (line 30) | @Override
method authority (line 36) | @Override
FILE: app/src/main/java/com/odoo/addons/crm/services/CRMLeadSyncService.java
class CRMLeadSyncService (line 39) | public class CRMLeadSyncService extends OSyncService implements ISyncFin...
method getSyncAdapter (line 44) | @Override
method performDataSync (line 51) | @Override
method performNextSync (line 65) | @Override
FILE: app/src/main/java/com/odoo/addons/customers/CustomerDetails.java
class CustomerDetails (line 62) | public class CustomerDetails extends ActionBarActivity implements View.O...
method onCreate (line 80) | @Override
method setMode (line 104) | private void setMode(Boolean edit) {
method setupActionBar (line 139) | private void setupActionBar() {
method onClick (line 162) | @Override
method checkControls (line 186) | private void checkControls() {
method setCustomerImage (line 194) | private void setCustomerImage() {
method setColor (line 212) | private void setColor(int color) {
method onOptionsItemSelected (line 229) | @Override
method onCreateOptionsMenu (line 274) | @Override
method onFieldValueChange (line 282) | @Override
class BigImageLoader (line 292) | private class BigImageLoader extends AsyncTask<Integer, Void, String> {
method doInBackground (line 294) | @Override
method onPostExecute (line 319) | @Override
method onSaveInstanceState (line 334) | @Override
method onActivityResult (line 341) | @Override
FILE: app/src/main/java/com/odoo/addons/customers/Customers.java
class Customers (line 67) | public class Customers extends BaseFragment implements ISyncStatusObserv...
type Type (line 84) | public enum Type {
method onCreateView (line 88) | @Override
method onViewCreated (line 96) | @Override
method onViewBind (line 114) | @Override
method onCreateLoader (line 130) | @Override
method onLoadFinished (line 144) | @Override
method onLoaderReset (line 177) | @Override
method onItemClick (line 182) | @Override
method showSheet (line 202) | private void showSheet(Cursor data) {
method onSheetMenuCreate (line 220) | @Override
method database (line 236) | @Override
method drawerMenus (line 241) | @Override
method onStatusChange (line 251) | @Override
method onRefresh (line 258) | @Override
method onCreateOptionsMenu (line 270) | @Override
method onOptionsItemSelected (line 278) | @Override
method onSearchViewTextChange (line 285) | @Override
method onSearchViewClose (line 292) | @Override
method onClick (line 297) | @Override
method onItemClick (line 306) | @Override
method requestOpportunity (line 347) | private void requestOpportunity(int row_id, String name) {
method requestLeads (line 355) | private void requestLeads(Type type, int row_id, String name) {
method onItemDoubleClick (line 364) | @Override
method onSheetActionClick (line 380) | @Override
method loadActivity (line 387) | private void loadActivity(ODataRow row) {
method onBackPressed (line 395) | @Override
class CustomerQuickCreater (line 405) | private class CustomerQuickCreater extends AsyncTask<ODataRow, Void, O...
method CustomerQuickCreater (line 409) | public CustomerQuickCreater(OnLiveSearchRecordCreateListener listene...
method onPreExecute (line 413) | @Override
method doInBackground (line 423) | @Override
method onPostExecute (line 434) | @Override
type OnLiveSearchRecordCreateListener (line 446) | public interface OnLiveSearchRecordCreateListener {
method recordCreated (line 447) | public void recordCreated(ODataRow row);
FILE: app/src/main/java/com/odoo/addons/customers/providers/CustomersSyncProvider.java
class CustomersSyncProvider (line 39) | public class CustomersSyncProvider extends BaseModelProvider {
method onCreate (line 43) | @Override
method setModel (line 50) | @Override
method query (line 56) | @Override
method authority (line 88) | @Override
method getRecords (line 94) | public List<ODataRow> getRecords(String searchName, OModel model) {
FILE: app/src/main/java/com/odoo/addons/customers/services/CustomerSyncService.java
class CustomerSyncService (line 32) | public class CustomerSyncService extends OSyncService {
method getSyncAdapter (line 35) | @Override
method performDataSync (line 40) | @Override
FILE: app/src/main/java/com/odoo/addons/customers/utils/ShareUtil.java
class ShareUtil (line 32) | public class ShareUtil {
method shareContact (line 35) | public static void shareContact(Context context, ODataRow row, Boolean...
FILE: app/src/main/java/com/odoo/addons/phonecall/PhoneCallDetail.java
class PhoneCallDetail (line 57) | public class PhoneCallDetail extends ActionBarActivity implements OField.
method onCreate (line 79) | @Override
method init (line 93) | private void init() {
method onCreateOptionsMenu (line 204) | @Override
method onOptionsItemSelected (line 210) | @Override
method setTimer (line 266) | private void setTimer() {
method onFieldValueChange (line 292) | @Override
method onClick (line 326) | @Override
method onReminderItemSelect (line 338) | @Override
FILE: app/src/main/java/com/odoo/addons/phonecall/PhoneCalls.java
class PhoneCalls (line 69) | public class PhoneCalls extends BaseFragment implements
type Type (line 86) | public enum Type {
method onCreateView (line 92) | @Override
method onViewCreated (line 99) | @Override
method initAdapter (line 108) | private void initAdapter() {
method onViewBind (line 120) | @Override
method onCreateLoader (line 158) | @Override
method onLoadFinished (line 179) | @Override
method onLoaderReset (line 218) | @Override
method drawerMenus (line 223) | @Override
method extra (line 242) | private Bundle extra(Type type) {
method database (line 248) | @Override
method onRefresh (line 254) | @Override
method onCreateOptionsMenu (line 266) | @Override
method onSearchViewTextChange (line 275) | @Override
method onSearchViewClose (line 282) | @Override
method onClick (line 287) | @Override
method onStatusChange (line 296) | @Override
method onItemClick (line 308) | @Override
method onItemDoubleClick (line 315) | @Override
method onItemClick (line 321) | @Override
method showSheet (line 327) | private void showSheet(Cursor data) {
method actionEvent (line 345) | private void actionEvent(MenuItem menu, Cursor cr) {
method dismissSheet (line 412) | private void dismissSheet(final BottomSheet sheet) {
method onShow (line 422) | @Override
method onDismiss (line 427) | @Override
method onSheetActionClick (line 432) | @Override
method onSheetMenuCreate (line 449) | @Override
method onBackPressed (line 456) | @Override
FILE: app/src/main/java/com/odoo/addons/phonecall/features/CallerWindow.java
class CallerWindow (line 40) | public class CallerWindow {
method CallerWindow (line 49) | public CallerWindow(Context context) {
method getWindowParams (line 57) | private WindowManager.LayoutParams getWindowParams() {
method buildView (line 70) | private View buildView() {
method inIdleMode (line 77) | public boolean inIdleMode() {
method isLollipop (line 81) | public boolean isLollipop() {
method bindView (line 85) | private void bindView(ODataRow row) {
method show (line 111) | public void show(final Boolean dialed, final ODataRow row) {
method dismiss (line 130) | public void dismiss() {
method isShowing (line 143) | public boolean isShowing() {
FILE: app/src/main/java/com/odoo/addons/phonecall/features/CustomerFinder.java
class CustomerFinder (line 38) | public class CustomerFinder {
method CustomerFinder (line 46) | public CustomerFinder(Context context) {
method findCustomer (line 51) | public void findCustomer(Boolean isDialed, String callerNumber) {
method setOnCustomerFindListener (line 58) | public void setOnCustomerFindListener(IOnCustomerFindListener listener) {
class CustomerFinderTask (line 62) | private class CustomerFinderTask extends AsyncTask<String, Void, OData...
method doInBackground (line 67) | @Override
method onPostExecute (line 150) | @Override
FILE: app/src/main/java/com/odoo/addons/phonecall/features/IOnCustomerFindListener.java
type IOnCustomerFindListener (line 24) | public interface IOnCustomerFindListener {
method onCustomerFind (line 25) | public void onCustomerFind(Boolean dialed, ODataRow row);
FILE: app/src/main/java/com/odoo/addons/phonecall/features/receivers/PhoneStateReceiver.java
class PhoneStateReceiver (line 43) | public class PhoneStateReceiver extends BroadcastReceiver implements IOn...
method onReceive (line 63) | @Override
method onCallStateChanged (line 90) | @Override
method showMissCallNotification (line 138) | private void showMissCallNotification(Bundle data) {
method _s (line 166) | public String _s(int res_id) {
method startLogCallActivity (line 170) | private void startLogCallActivity(Bundle data) {
method callStarted (line 183) | private void callStarted() {
method onCustomerFind (line 189) | @Override
FILE: app/src/main/java/com/odoo/addons/phonecall/models/CRMPhoneCalls.java
class CRMPhoneCalls (line 51) | public class CRMPhoneCalls extends OModel {
method CRMPhoneCalls (line 99) | public CRMPhoneCalls(Context context, OUser user) {
method uri (line 104) | @Override
method defaultDomain (line 109) | @Override
method storeLeadName (line 116) | public String storeLeadName(OValues values) {
method storeUserName (line 128) | public String storeUserName(OValues values) {
method storeCustomerName (line 140) | public String storeCustomerName(OValues values) {
method storeCallType (line 152) | public String storeCallType(OValues values) {
method setReminder (line 164) | public void setReminder(int row_id) {
FILE: app/src/main/java/com/odoo/addons/phonecall/models/CRMPhoneCallsCategory.java
class CRMPhoneCallsCategory (line 32) | public class CRMPhoneCallsCategory extends OModel {
type Type (line 35) | public enum Type {
method CRMPhoneCallsCategory (line 41) | public CRMPhoneCallsCategory(Context context, OUser user) {
method defaultDomain (line 50) | @Override
method getId (line 57) | public static int getId(Context context, Type type) {
FILE: app/src/main/java/com/odoo/addons/phonecall/providers/PhoneCallProvider.java
class PhoneCallProvider (line 27) | public class PhoneCallProvider extends BaseModelProvider {
method setModel (line 30) | @Override
method authority (line 36) | @Override
FILE: app/src/main/java/com/odoo/addons/phonecall/services/PhoneCallSyncService.java
class PhoneCallSyncService (line 38) | public class PhoneCallSyncService extends OSyncService implements ISyncF...
method getSyncAdapter (line 42) | @Override
method performDataSync (line 48) | @Override
method performNextSync (line 58) | @Override
FILE: app/src/main/java/com/odoo/addons/sale/AddProductLineWizard.java
class AddProductLineWizard (line 37) | public class AddProductLineWizard extends ActionBarActivity implements
method onCreate (line 53) | @Override
method generateView (line 97) | private void generateView(View v, int position) {
method onItemClick (line 128) | @Override
method onItemLongClick (line 144) | @Override
method onLongClicked (line 161) | private void onLongClicked(final ODataRow row) {
method onRecordCreated (line 182) | @Override
method beforeTextChanged (line 194) | @Override
method onTextChanged (line 200) | @Override
method afterTextChanged (line 215) | @Override
method onClick (line 220) | @Override
method onSearchChange (line 239) | @Override
class LiveSearch (line 253) | private class LiveSearch extends AsyncTask<String, Void, List<ODataRow...
method onPreExecute (line 255) | @Override
method doInBackground (line 262) | @Override
method onPostExecute (line 283) | @Override
method onCancelled (line 296) | @Override
class QuickCreateRecordProcess (line 304) | private class QuickCreateRecordProcess extends AsyncTask<ODataRow, Voi...
method QuickCreateRecordProcess (line 309) | public QuickCreateRecordProcess(IOnQuickRecordCreateListener listene...
method onPreExecute (line 313) | @Override
method doInBackground (line 323) | @Override
method onPostExecute (line 334) | @Override
FILE: app/src/main/java/com/odoo/addons/sale/Sales.java
class Sales (line 64) | public class Sales extends BaseFragment implements
type Type (line 79) | public enum Type {
method onCreateView (line 84) | @Override
method onViewCreated (line 92) | @Override
method initAdapter (line 100) | private void initAdapter() {
method onViewBind (line 114) | @Override
method drawerMenus (line 139) | @Override
method onCreateLoader (line 153) | @Override
method onLoadFinished (line 179) | @Override
method onLoaderReset (line 213) | @Override
method data (line 218) | private Bundle data(Type type) {
method database (line 224) | @Override
method onRefresh (line 230) | @Override
method onCreateOptionsMenu (line 242) | @Override
method onSearchViewTextChange (line 251) | @Override
method onSearchViewClose (line 258) | @Override
method onStatusChange (line 264) | @Override
method onItemDoubleClick (line 269) | @Override
method onDoubleClick (line 274) | private void onDoubleClick(int position) {
method onItemClick (line 281) | @Override
method showSheet (line 289) | private void showSheet(Cursor data) {
method onItemClick (line 308) | @Override
method OnSuccess (line 340) | @Override
method OnCancelled (line 345) | @Override
method OnSuccess (line 351) | @Override
method OnCancelled (line 356) | @Override
method OnSuccess (line 362) | @Override
method OnCancelled (line 367) | @Override
method onSheetActionClick (line 373) | @Override
method onBackPressed (line 382) | @Override
method onClick (line 391) | @Override
FILE: app/src/main/java/com/odoo/addons/sale/SalesDetail.java
class SalesDetail (line 68) | public class SalesDetail extends ActionBarActivity implements View.OnCli...
method onCreate (line 89) | @Override
method init (line 105) | private void init() {
method initAdapter (line 158) | private void initAdapter() {
method onCreateOptionsMenu (line 187) | @Override
method onOptionsItemSelected (line 213) | @Override
class SaleOrderOperation (line 249) | private class SaleOrderOperation extends AsyncTask<OValues, Void, Bool...
method onPreExecute (line 253) | @Override
method doInBackground (line 263) | @Override
method onPostExecute (line 335) | @Override
method OnSuccess (line 348) | @Override
method OnCancelled (line 355) | @Override
method OnSuccess (line 362) | @Override
method OnCancelled (line 368) | @Override
method onClick (line 374) | @Override
class OnCustomerChangeUpdate (line 391) | private class OnCustomerChangeUpdate extends AsyncTask<ODataRow, Void,...
method onPreExecute (line 394) | @Override
method doInBackground (line 404) | @Override
method onPostExecute (line 410) | @Override
class OnProductChange (line 417) | private class OnProductChange extends AsyncTask<HashMap<String, Float>...
method onPreExecute (line 421) | @Override
method doInBackground (line 431) | @Override
method onPostExecute (line 513) | @Override
method onActivityResult (line 534) | @Override
FILE: app/src/main/java/com/odoo/addons/sale/models/AccountPaymentTerm.java
class AccountPaymentTerm (line 30) | public class AccountPaymentTerm extends OModel {
method AccountPaymentTerm (line 36) | public AccountPaymentTerm(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/addons/sale/models/ProductProduct.java
class ProductProduct (line 31) | public class ProductProduct extends OModel {
method ProductProduct (line 38) | public ProductProduct(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/addons/sale/models/SaleOrder.java
class SaleOrder (line 56) | public class SaleOrder extends OModel {
method SaleOrder (line 97) | public SaleOrder(Context context, OUser user) {
method uri (line 107) | @Override
method onPartnerIdChange (line 112) | public ODataRow onPartnerIdChange(ODataRow row) {
method currency (line 151) | public ODataRow currency() {
method getStateTitle (line 166) | public String getStateTitle(OValues row) {
method storeCurrencySymbol (line 180) | public String storeCurrencySymbol(OValues values) {
method storePartnerName (line 192) | public String storePartnerName(OValues values) {
method countOrderLines (line 204) | public String countOrderLines(OValues values) {
method cancelOrder (line 216) | public void cancelOrder(final Sales.Type type, final ODataRow quotatio...
method confirmSale (line 272) | public void confirmSale(final ODataRow quotation, final OnOperationSuc...
method newCopyQuotation (line 324) | public void newCopyQuotation(final ODataRow quotation, final OnOperati...
type OnOperationSuccessListener (line 371) | public static interface OnOperationSuccessListener {
method OnSuccess (line 372) | public void OnSuccess();
method OnCancelled (line 374) | public void OnCancelled();
FILE: app/src/main/java/com/odoo/addons/sale/models/SalesOrderLine.java
class SalesOrderLine (line 31) | public class SalesOrderLine extends OModel {
method SalesOrderLine (line 42) | public SalesOrderLine(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/addons/sale/providers/SaleOrderProvider.java
class SaleOrderProvider (line 27) | public class SaleOrderProvider extends BaseModelProvider {
method setModel (line 30) | @Override
method authority (line 36) | @Override
FILE: app/src/main/java/com/odoo/addons/sale/services/SaleOrderSyncService.java
class SaleOrderSyncService (line 39) | public class SaleOrderSyncService extends OSyncService implements ISyncF...
method getSyncAdapter (line 43) | @Override
method performDataSync (line 48) | @Override
method performNextSync (line 70) | @Override
method performNextSync (line 76) | @Override
FILE: app/src/main/java/com/odoo/base/addons/BaseModels.java
class BaseModels (line 37) | public class BaseModels {
method baseModels (line 40) | public static List<OModel> baseModels(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/base/addons/ir/IrAttachment.java
class IrAttachment (line 38) | public class IrAttachment extends OModel {
method IrAttachment (line 56) | public IrAttachment(Context context, OUser user) {
method createAttachment (line 60) | public boolean createAttachment(OValues value, String rel_model, int r...
method valuesToData (line 76) | public static JSONObject valuesToData(OModel model, OValues value) {
method getDatasFromServer (line 94) | public String getDatasFromServer(Integer row_id) {
FILE: app/src/main/java/com/odoo/base/addons/ir/IrModel.java
class IrModel (line 37) | public class IrModel extends OModel {
method IrModel (line 47) | public IrModel(Context context, OUser user) {
method uri (line 51) | @Override
method checkForCreateDate (line 56) | @Override
method checkForWriteDate (line 61) | @Override
method setLastSyncDateTimeToNow (line 66) | public void setLastSyncDateTimeToNow(OModel model) {
FILE: app/src/main/java/com/odoo/base/addons/ir/feature/OFileManager.java
class OFileManager (line 65) | public class OFileManager implements DialogInterface.OnClickListener {
type RequestType (line 81) | public enum RequestType {
method OFileManager (line 85) | public OFileManager(Context context) {
method downloadAttachment (line 91) | public void downloadAttachment(int attachment_id) {
method _download (line 125) | private void _download(ODataRow attachment) {
class DownloadManager (line 136) | private class DownloadManager extends AsyncTask<ODataRow, Void, ODataR...
method DownloadManager (line 140) | public DownloadManager(ONotificationBuilder builder) {
method onPreExecute (line 144) | @Override
method doInBackground (line 153) | @Override
method onPostExecute (line 177) | @Override
method createFile (line 201) | private String createFile(String name, byte[] fileAsBytes, String file...
method requestIntent (line 222) | private void requestIntent(Uri uri) {
method fileExists (line 236) | private boolean fileExists(Uri uri) {
method getBitmapFromURI (line 240) | public Bitmap getBitmapFromURI(Uri uri) {
method getDocPath (line 253) | @TargetApi(Build.VERSION_CODES.KITKAT)
method atLeastKitKat (line 271) | public boolean atLeastKitKat() {
method requestForFile (line 275) | public void requestForFile(RequestType type) {
method getURIDetails (line 319) | public OValues getURIDetails(Uri uri) {
method getPath (line 352) | public String getPath(Uri uri) {
method handleResult (line 364) | public OValues handleResult(int requestCode, int resultCode, Intent da...
method requestIntent (line 385) | private void requestIntent(Intent intent, int requestCode) {
method requestDialog (line 394) | private void requestDialog(RequestType type) {
method onClick (line 406) | @Override
FILE: app/src/main/java/com/odoo/base/addons/ir/providers/IrModelProvider.java
class IrModelProvider (line 27) | public class IrModelProvider extends BaseModelProvider {
method setModel (line 30) | @Override
FILE: app/src/main/java/com/odoo/base/addons/mail/MailMessage.java
class MailMessage (line 43) | public class MailMessage extends OModel {
method MailMessage (line 64) | public MailMessage(Context context, OUser user) {
method hasAttachment (line 68) | public boolean hasAttachment(OValues values) {
method authorName (line 80) | public String authorName(OValues values) {
method getAuthorImage (line 94) | public String getAuthorImage(int row_id) {
method getServerIds (line 103) | public List<Integer> getServerIds(String model, int res_server_id) {
method checkForWriteDate (line 112) | @Override
method allowCreateRecordOnServer (line 117) | @Override
method allowDeleteRecordOnServer (line 122) | @Override
method allowUpdateRecordOnServer (line 127) | @Override
FILE: app/src/main/java/com/odoo/base/addons/mail/MailMessageSubType.java
class MailMessageSubType (line 29) | public class MailMessageSubType extends OModel {
method MailMessageSubType (line 34) | public MailMessageSubType(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/base/addons/mail/widget/MailChatterCompose.java
class MailChatterCompose (line 62) | public class MailChatterCompose extends ActionBarActivity implements Vie...
type MessageType (line 72) | public enum MessageType {
method onCreate (line 81) | @Override
method init (line 122) | private void init() {
method onClick (line 141) | @Override
method onActivityResult (line 156) | @Override
method addAttachment (line 165) | private void addAttachment(OValues values) {
method sendMessage (line 195) | private void sendMessage() {
method postMessage (line 225) | private void postMessage() {
class CreateAttachments (line 232) | private class CreateAttachments extends AsyncTask<List<OValues>, Void,...
method onPreExecute (line 235) | @Override
method doInBackground (line 248) | @Override
method onPostExecute (line 280) | @Override
class MessagePost (line 291) | private class MessagePost extends AsyncTask<String, Void, Boolean> {
method onPreExecute (line 294) | @Override
method doInBackground (line 305) | @Override
method onPostExecute (line 345) | @Override
FILE: app/src/main/java/com/odoo/base/addons/mail/widget/MailChatterView.java
class MailChatterView (line 61) | public class MailChatterView extends LinearLayout implements
method MailChatterView (line 78) | public MailChatterView(Context context) {
method MailChatterView (line 83) | public MailChatterView(Context context, AttributeSet attrs) {
method MailChatterView (line 88) | public MailChatterView(Context context, AttributeSet attrs, int defSty...
method init (line 93) | private void init(Context context, AttributeSet attrs, int defStyleAtt...
method generateView (line 107) | public void generateView() {
method getMessages (line 128) | private void getMessages() {
method updateChatterList (line 143) | private void updateChatterList() {
method setModelName (line 174) | public void setModelName(String model) {
method setRecordServerId (line 178) | public void setRecordServerId(int record_server_id) {
method getView (line 182) | @Override
method onClick (line 220) | @Override
method onDetachedFromWindow (line 258) | @Override
class ChatterMessagesLoader (line 266) | private class ChatterMessagesLoader extends AsyncTask<Void, Void, Void> {
method onPreExecute (line 268) | @Override
method doInBackground (line 275) | @Override
method onPostExecute (line 292) | @Override
method onReceive (line 303) | @Override
FILE: app/src/main/java/com/odoo/base/addons/mail/widget/MailDetailDialog.java
class MailDetailDialog (line 51) | public class MailDetailDialog extends ActionBarActivity implements View....
method onCreate (line 63) | @Override
method init (line 77) | private void init() {
class LoadAttachments (line 114) | private class LoadAttachments extends AsyncTask<Void, Void, Void> {
method doInBackground (line 116) | @Override
method addAttachment (line 130) | private void addAttachment(ODataRow values) {
method onClick (line 156) | @Override
method onPause (line 175) | @Override
FILE: app/src/main/java/com/odoo/base/addons/mail/widget/MessageObserver.java
class MessageObserver (line 26) | public class MessageObserver extends ContentObserver {
method MessageObserver (line 30) | public MessageObserver() {
method onChange (line 34) | @Override
method onChange (line 42) | @Override
method setOnDataSetChangeListener (line 50) | public void setOnDataSetChangeListener(OnDataSetChangeListener listene...
type OnDataSetChangeListener (line 54) | public interface OnDataSetChangeListener {
method onDataSetChange (line 55) | public void onDataSetChange();
FILE: app/src/main/java/com/odoo/base/addons/res/ResCompany.java
class ResCompany (line 30) | public class ResCompany extends OModel {
method ResCompany (line 37) | public ResCompany(Context context, OUser user) {
method getCurrency (line 41) | public static ODataRow getCurrency(Context context) {
method allowCreateRecordOnServer (line 47) | @Override
method allowUpdateRecordOnServer (line 52) | @Override
method allowDeleteRecordInLocal (line 57) | @Override
method myId (line 62) | public static int myId(Context context) {
method myCurrency (line 67) | public static int myCurrency(Context context) {
FILE: app/src/main/java/com/odoo/base/addons/res/ResCountry.java
class ResCountry (line 29) | public class ResCountry extends OModel {
method ResCountry (line 33) | public ResCountry(Context context, OUser user) {
method allowCreateRecordOnServer (line 37) | @Override
method allowUpdateRecordOnServer (line 42) | @Override
method allowDeleteRecordInLocal (line 47) | @Override
FILE: app/src/main/java/com/odoo/base/addons/res/ResCurrency.java
class ResCurrency (line 30) | public class ResCurrency extends OModel {
method ResCurrency (line 35) | public ResCurrency(Context context, OUser user) {
method getSymbol (line 39) | public static String getSymbol(Context context, int row_id) {
method allowCreateRecordOnServer (line 45) | @Override
method allowUpdateRecordOnServer (line 50) | @Override
method allowDeleteRecordInLocal (line 55) | @Override
FILE: app/src/main/java/com/odoo/base/addons/res/ResPartner.java
class ResPartner (line 39) | public class
method ResPartner (line 70) | public ResPartner(Context context, OUser user) {
method uri (line 75) | @Override
method storeCompanyName (line 80) | public String storeCompanyName(OValues value) {
method getContact (line 92) | public static String getContact(Context context, int row_id) {
method getAddress (line 103) | public String getAddress(ODataRow row) {
method liveSearchURI (line 116) | public Uri liveSearchURI() {
FILE: app/src/main/java/com/odoo/base/addons/res/ResUsers.java
class ResUsers (line 29) | public class ResUsers extends OModel {
method allowCreateRecordOnServer (line 35) | @Override
method allowUpdateRecordOnServer (line 40) | @Override
method allowDeleteRecordInLocal (line 45) | @Override
method ResUsers (line 50) | public ResUsers(Context context, OUser user) {
method myId (line 54) | public static int myId(Context context) {
FILE: app/src/main/java/com/odoo/config/Addons.java
class Addons (line 30) | public class Addons extends AddonsHelper {
FILE: app/src/main/java/com/odoo/config/BaseConfig.java
class BaseConfig (line 22) | public class BaseConfig {
FILE: app/src/main/java/com/odoo/config/IntroSliderItems.java
class IntroSliderItems (line 36) | public class IntroSliderItems implements SliderPagerAdapter.SliderBuilde...
method getItems (line 40) | public List<SliderItem> getItems() {
method getCustomView (line 69) | @Override
method onClick (line 89) | @Override
FILE: app/src/main/java/com/odoo/core/account/About.java
class About (line 41) | public class About extends ActionBarActivity implements View.OnClickList...
method onCreate (line 49) | @Override
method onCreateOptionsMenu (line 87) | @Override
method onOptionsItemSelected (line 97) | @Override
method onClick (line 119) | @Override
FILE: app/src/main/java/com/odoo/core/account/AppIntro.java
class AppIntro (line 10) | public class AppIntro extends ActionBarActivity {
method onCreate (line 12) | @Override
FILE: app/src/main/java/com/odoo/core/account/BaseSettings.java
class BaseSettings (line 38) | public class BaseSettings extends PreferenceFragment implements
method onCreate (line 49) | @Override
method onPreferenceClick (line 59) | @Override
method showTimePicker (line 68) | private void showTimePicker() {
method finish (line 79) | private void finish() {
method getActionBar (line 83) | private ActionBar getActionBar() {
method onDatePick (line 87) | @Override
method onTimePick (line 92) | @Override
method getNotificationRingTone (line 98) | public static Uri getNotificationRingTone(Context context) {
method getDayStartTime (line 104) | public static String getDayStartTime(Context context) {
FILE: app/src/main/java/com/odoo/core/account/ManageAccounts.java
class ManageAccounts (line 47) | public class ManageAccounts extends ActionBarActivity implements View.On...
method onCreate (line 53) | @Override
method generateView (line 67) | private void generateView(View view, OUser user) {
method onOptionsItemSelected (line 91) | @Override
method onClick (line 101) | @Override
method getView (line 179) | @Override
FILE: app/src/main/java/com/odoo/core/account/OdooAccountQuickManage.java
class OdooAccountQuickManage (line 48) | public class OdooAccountQuickManage extends ActionBarActivity implements...
method onCreate (line 58) | @Override
method updatePassword (line 78) | private void updatePassword() {
method removeAccount (line 89) | private void removeAccount() {
method onClick (line 128) | @Override
method savePassword (line 141) | private void savePassword() {
class LoginProcess (line 154) | private class LoginProcess extends AsyncTask<String, Void, OUser> {
method onPreExecute (line 158) | @Override
method doInBackground (line 169) | @Override
method onPostExecute (line 180) | @Override
FILE: app/src/main/java/com/odoo/core/account/OdooLogin.java
class OdooLogin (line 46) | public class OdooLogin extends ActionBarActivity implements View.OnClick...
method onCreate (line 66) | @Override
method init (line 90) | private void init() {
method startOdooActivity (line 103) | private void startOdooActivity() {
method onCreateOptionsMenu (line 108) | @Override
method onOptionsItemSelected (line 114) | @Override
method onClick (line 119) | @Override
method toggleSelfHostedURL (line 137) | private void toggleSelfHostedURL() {
method onFocusChange (line 155) | @Override
method validateURL (line 175) | private boolean validateURL(String url) {
method createServerURL (line 179) | private String createServerURL(String server_url) {
method showForceConnectDialog (line 188) | private void showForceConnectDialog() {
method loginUser (line 211) | private void loginUser() {
method showDatabases (line 264) | private void showDatabases() {
method instanceSelected (line 279) | @Override
method canceledInstanceSelect (line 293) | @Override
method onUserSelected (line 299) | @Override
method onRequestAccountSelect (line 305) | @Override
method onNewAccountRequest (line 312) | @Override
method onCancelSelect (line 317) | @Override
class LoginProcess (line 321) | private class LoginProcess extends AsyncTask<String, Void, OUser> {
method LoginProcess (line 327) | public LoginProcess() {
method LoginProcess (line 331) | public LoginProcess(OdooInstance instance, OUser user) {
method onPreExecute (line 336) | @Override
method doInBackground (line 347) | @Override
method onPostExecute (line 366) | @Override
class InstanceGetter (line 395) | private class InstanceGetter extends AsyncTask<OUser, Void, List<OdooI...
method onPreExecute (line 399) | @Override
method doInBackground (line 405) | @Override
method onPostExecute (line 411) | @Override
class AccountCreater (line 427) | private class AccountCreater extends AsyncTask<OUser, Void, Boolean> {
method onPreExecute (line 431) | @Override
method doInBackground (line 437) | @Override
method onPostExecute (line 458) | @Override
class OdooURLTester (line 478) | private class OdooURLTester extends AsyncTask<String, Void, Boolean> {
method onPreExecute (line 482) | @Override
method doInBackground (line 498) | @Override
method onPostExecute (line 510) | @Override
FILE: app/src/main/java/com/odoo/core/account/OdooUserAskPassword.java
class OdooUserAskPassword (line 37) | public class OdooUserAskPassword {
method OdooUserAskPassword (line 46) | public OdooUserAskPassword(Context context, OUser user) {
method get (line 52) | public static OdooUserAskPassword get(Context context, OUser user) {
method show (line 56) | public void show() {
method getView (line 86) | private View getView() {
method setOnUserPasswordValidateListener (line 102) | public OdooUserAskPassword setOnUserPasswordValidateListener(OnUserPas...
type OnUserPasswordValidateListener (line 107) | public interface OnUserPasswordValidateListener {
method onSuccess (line 108) | public void onSuccess();
method onCancel (line 110) | public void onCancel();
method onFail (line 112) | public void onFail();
FILE: app/src/main/java/com/odoo/core/account/Profile.java
class Profile (line 43) | public class Profile extends ActionBarActivity implements View.OnClickLi...
method onCreate (line 53) | @Override
method onClick (line 91) | @Override
FILE: app/src/main/java/com/odoo/core/auth/OdooAccountManager.java
class OdooAccountManager (line 35) | public class OdooAccountManager {
method getAllAccounts (line 46) | public static List<OUser> getAllAccounts(Context context) {
method hasAnyAccount (line 64) | public static boolean hasAnyAccount(Context context) {
method createAccount (line 77) | public static boolean createAccount(Context context, OUser user) {
method removeAccount (line 91) | public static boolean removeAccount(Context context, String username) {
method updateUserData (line 108) | public static OUser updateUserData(Context context, OUser newData) {
method anyActiveUser (line 125) | public static boolean anyActiveUser(Context context) {
method getActiveUser (line 140) | public static OUser getActiveUser(Context context) {
method getDetails (line 156) | public static OUser getDetails(Context context, String username) {
method login (line 172) | public static OUser login(Context context, String username) {
method logout (line 205) | public static boolean logout(Context context, String username) {
method cancelUserSync (line 218) | private static boolean cancelUserSync(Account account) {
FILE: app/src/main/java/com/odoo/core/auth/OdooAuthService.java
class OdooAuthService (line 27) | public class OdooAuthService extends Service {
method onBind (line 30) | @Override
FILE: app/src/main/java/com/odoo/core/auth/OdooAuthenticator.java
class OdooAuthenticator (line 36) | public class OdooAuthenticator extends AbstractAccountAuthenticator {
method OdooAuthenticator (line 42) | public OdooAuthenticator(Context context) {
method addAccount (line 47) | @Override
method getAccountRemovalAllowed (line 60) | @NonNull
method editProperties (line 79) | @Override
method confirmCredentials (line 85) | @Override
method getAuthToken (line 90) | @Override
method getAuthTokenLabel (line 95) | @Override
method updateCredentials (line 100) | @Override
method hasFeatures (line 105) | @Override
FILE: app/src/main/java/com/odoo/core/orm/ODataRow.java
class ODataRow (line 32) | public class ODataRow implements Parcelable {
method put (line 37) | public void put(String key, Object value) {
method get (line 41) | public Object get(String key) {
method getInt (line 45) | public Integer getInt(String key) {
method getFloat (line 52) | public Float getFloat(String key) {
method getString (line 59) | public String getString(String key) {
method getBoolean (line 66) | public Boolean getBoolean(String key) {
method getM2ORecord (line 71) | public OM2ORecord getM2ORecord(String key) {
method getM2MRecord (line 75) | public OM2MRecord getM2MRecord(String key) {
method getO2MRecord (line 79) | public OO2MRecord getO2MRecord(String key) {
method values (line 83) | public List<Object> values() {
method keys (line 89) | public List<String> keys() {
method contains (line 95) | public boolean contains(String key) {
method size (line 99) | public int size() {
method toString (line 103) | @Override
method describeContents (line 108) | @Override
method writeToParcel (line 113) | @Override
method remove (line 118) | public void remove(String key) {
class IdName (line 122) | public class IdName {
method IdName (line 126) | public IdName(Integer id, String name) {
method getId (line 132) | public Integer getId() {
method setId (line 136) | public void setId(Integer id) {
method getName (line 140) | public String getName() {
method setName (line 144) | public void setName(String name) {
method addAll (line 150) | public void addAll(HashMap<String, Object> data) {
method addAll (line 154) | public void addAll(ODataRow row) {
method getAll (line 158) | public HashMap<String, Object> getAll() {
method toValues (line 162) | public OValues toValues() {
method getPrimaryBundleData (line 168) | public Bundle getPrimaryBundleData() {
FILE: app/src/main/java/com/odoo/core/orm/OM2MRecord.java
class OM2MRecord (line 27) | public class OM2MRecord {
method OM2MRecord (line 33) | public OM2MRecord(OModel model, OColumn col, int id) {
method getRelIds (line 39) | public List<Integer> getRelIds() {
method browseEach (line 48) | public List<ODataRow> browseEach() {
FILE: app/src/main/java/com/odoo/core/orm/OM2ORecord.java
class OM2ORecord (line 24) | public class OM2ORecord {
method OM2ORecord (line 31) | public OM2ORecord(OModel base, OColumn col, Integer rec_id) {
method getId (line 37) | public Integer getId() {
method getName (line 41) | public String getName() {
method browse (line 47) | public ODataRow browse(OModel rel_model) {
method browse (line 54) | public ODataRow browse() {
method toString (line 59) | @Override
FILE: app/src/main/java/com/odoo/core/orm/OModel.java
class OModel (line 77) | public class OModel implements ISyncServiceListener {
type Command (line 98) | public enum Command {
method Command (line 103) | Command(int type) {
method getValue (line 107) | public int getValue() {
method OModel (line 128) | public OModel(Context context, String model_name, OUser user) {
method getReadableDatabase (line 142) | public SQLiteDatabase getReadableDatabase() {
method getWritableDatabase (line 146) | public SQLiteDatabase getWritableDatabase() {
method getDatabaseName (line 150) | public String getDatabaseName() {
method close (line 154) | public void close() {
method setDefaultNameColumn (line 158) | public void setDefaultNameColumn(String nameColumn) {
method getDefaultNameColumn (line 162) | public String getDefaultNameColumn() {
method setModelName (line 166) | public OModel setModelName(String model_name) {
method hasMailChatter (line 171) | public boolean hasMailChatter() {
method setHasMailChatter (line 175) | public void setHasMailChatter(boolean hasMailChatter) {
method getUser (line 179) | public OUser getUser() {
method getOdooVersion (line 183) | public OdooVersion getOdooVersion() {
method getColumns (line 187) | public List<OColumn> getColumns() {
method getColumns (line 194) | public List<OColumn> getColumns(Boolean local) {
method getRelationColumns (line 206) | public List<OColumn> getRelationColumns() {
method getColumn (line 212) | public OColumn getColumn(String column_name) {
method getColumn (line 219) | private OColumn getColumn(Field field) {
method isDomainFilterColumn (line 260) | private boolean isDomainFilterColumn(Field field) {
method checkForOnChangeBGProcess (line 269) | private Boolean checkForOnChangeBGProcess(Field field) {
method checkForOnChangeMethod (line 278) | private Method checkForOnChangeMethod(Field field) {
method checkForFunctionalStore (line 298) | public Boolean checkForFunctionalStore(Field field) {
method getFunctionalDepends (line 314) | public String[] getFunctionalDepends(Field field) {
method checkForFunctionalColumn (line 323) | private Method checkForFunctionalColumn(Field field) {
method compatibleField (line 340) | private boolean compatibleField(Field field) {
method prepareFields (line 381) | private void prepareFields() {
method getFunctionalColumns (line 415) | public List<OColumn> getFunctionalColumns() {
method getModelName (line 421) | public String getModelName() {
method getManyToManyColumns (line 425) | public List<OColumn> getManyToManyColumns(OModel relation_model) {
method createInstance (line 443) | public OModel createInstance(Class<?> type) {
method getTableName (line 453) | public String getTableName() {
method toString (line 457) | public String toString() {
method get (line 461) | public static OModel get(Context context, String model_name, String us...
method authority (line 481) | public String authority() {
method buildURI (line 485) | public Uri buildURI(String authority) {
method uri (line 491) | public Uri uri() {
method defaultDomain (line 496) | public ODomain defaultDomain() {
method updateProjection (line 500) | private String[] updateProjection(String[] projection) {
method projection (line 518) | public String[] projection(Boolean onlyServerColumns) {
method projection (line 530) | public String[] projection() {
method checkForCreateDate (line 543) | public boolean checkForCreateDate() {
method checkForWriteDate (line 547) | public boolean checkForWriteDate() {
method allowUpdateRecordOnServer (line 551) | public boolean allowUpdateRecordOnServer() {
method allowCreateRecordOnServer (line 555) | public boolean allowCreateRecordOnServer() {
method allowDeleteRecordOnServer (line 559) | public boolean allowDeleteRecordOnServer() {
method allowDeleteRecordInLocal (line 563) | public boolean allowDeleteRecordInLocal() {
method getLabel (line 569) | public String getLabel(String column, String key) {
method browse (line 577) | public ODataRow browse(int row_id) {
method browse (line 581) | public ODataRow browse(String[] projection, int row_id) {
method browse (line 589) | public ODataRow browse(String[] projection, String selection, String[]...
method getServerIds (line 597) | public List<Integer> getServerIds() {
method isEmptyTable (line 607) | public boolean isEmptyTable() {
method getLastSyncDateTime (line 611) | public String getLastSyncDateTime() {
method select (line 630) | public List<ODataRow> select() {
method select (line 634) | public List<ODataRow> select(String[] projection) {
method select (line 638) | public List<ODataRow> select(String[] projection, String where, String...
method select (line 642) | public List<ODataRow> select(String[] projection, String where, String...
method getFunctionalMethodValue (line 694) | public Object getFunctionalMethodValue(OColumn column, Object record) {
method getOnChangeMethodValue (line 707) | public Object getOnChangeMethodValue(OColumn column, Object record) {
method getFunctionalColumns (line 718) | private List<OColumn> getFunctionalColumns(String[] projection) {
method getRelationColumns (line 736) | private List<OColumn> getRelationColumns(String[] projection) {
method insertOrUpdate (line 751) | public int insertOrUpdate(int serverId, OValues values) {
method insertOrUpdate (line 761) | public int insertOrUpdate(String selection, String[] args, OValues val...
method selectRowId (line 770) | public int selectRowId(String selection, String[] args) {
method selectServerId (line 784) | public int selectServerId(int row_id) {
method selectRowId (line 788) | public int selectRowId(int server_id) {
method insert (line 796) | public int insert(OValues values) {
method hasServerRecord (line 805) | public boolean hasServerRecord(int server_id) {
method isServerRecordDirty (line 810) | public boolean isServerRecordDirty(int server_id) {
method hasRecord (line 815) | public boolean hasRecord(int row_id) {
method deleteRecords (line 821) | public int deleteRecords(List<Integer> serverIds, boolean permanently) {
method delete (line 833) | public int delete(String selection, String[] args) {
method delete (line 837) | public int delete(String selection, String[] args, boolean permanently) {
method delete (line 855) | public boolean delete(int row_id) {
method delete (line 859) | public boolean delete(int row_id, boolean permanently) {
method update (line 872) | public int update(String selection, String[] args, OValues values) {
method update (line 876) | public boolean update(int row_id, OValues values) {
method query (line 883) | public List<ODataRow> query(String query) {
method query (line 887) | public List<ODataRow> query(String query, String[] args) {
method count (line 904) | public int count(String selection, String[] args) {
method storeManyToManyRecord (line 918) | public void storeManyToManyRecord(String column_name, int row_id, List...
method selectManyToManyRecords (line 970) | public List<ODataRow> selectManyToManyRecords(String[] projection, Str...
method getServerDataHelper (line 1000) | public ServerDataHelper getServerDataHelper() {
method getName (line 1004) | public String getName(int row_id) {
method quickSyncRecords (line 1012) | public void quickSyncRecords(ODomain domain) {
method quickCreateRecord (line 1020) | public ODataRow quickCreateRecord(ODataRow record) {
method countGroupBy (line 1031) | public ODataRow countGroupBy(String column, String group_by, String ha...
method isInstalledOnServer (line 1044) | public boolean isInstalledOnServer(String module_name) {
method getDatabaseLocalPath (line 1080) | public String getDatabaseLocalPath() {
method exportDB (line 1084) | public void exportDB() {
method onSyncStarted (line 1110) | @Override
method onSyncFinished (line 1115) | @Override
FILE: app/src/main/java/com/odoo/core/orm/OModelRegistry.java
class OModelRegistry (line 24) | public class OModelRegistry {
method register (line 28) | public void register(OModel model) {
method getModel (line 34) | public OModel getModel(String model, String user) {
method unRegister (line 42) | public void unRegister(String model, String user) {
method clearAll (line 49) | public void clearAll() {
method count (line 53) | public int count() {
method getKey (line 57) | private String getKey(OModel model) {
FILE: app/src/main/java/com/odoo/core/orm/OO2MRecord.java
class OO2MRecord (line 27) | public class OO2MRecord {
method OO2MRecord (line 35) | public OO2MRecord(OModel oModel, OColumn col, int id) {
method setOrder (line 41) | public OO2MRecord setOrder(String order_by) {
method getIds (line 46) | public List<Integer> getIds() {
method getIds (line 51) | public List<Integer> getIds(OModel rel_model) {
method browseEach (line 61) | public List<ODataRow> browseEach() {
FILE: app/src/main/java/com/odoo/core/orm/OSQLHelper.java
class OSQLHelper (line 33) | public class OSQLHelper {
method OSQLHelper (line 39) | public OSQLHelper(Context context) {
method getModels (line 43) | public List<String> getModels() {
method createStatements (line 47) | public void createStatements(OModel model) {
method generateColumnStatement (line 63) | private String generateColumnStatement(OModel model, List<OColumn> col...
method createRelationTable (line 96) | private void createRelationTable(OModel base_model, OColumn column) {
method manyToManyTable (line 116) | private void manyToManyTable(OColumn column, OModel model) {
method getType (line 141) | private String getType(OColumn column) {
method getStatements (line 159) | public HashMap<String, String> getStatements() {
method createDropStatements (line 163) | public void createDropStatements(OModel model) {
method getAllModels (line 201) | public List<OModel> getAllModels(List<OModel> models) {
method getRelationModels (line 217) | private List<OModel> getRelationModels(OModel model, List<OColumn> col...
FILE: app/src/main/java/com/odoo/core/orm/OSQLite.java
class OSQLite (line 44) | public class OSQLite extends SQLiteOpenHelper {
method OSQLite (line 53) | public OSQLite(Context context, OUser user) {
method getModels (line 69) | private List<OModel> getModels() {
method onCreate (line 88) | @Override
method registerModels (line 104) | private void registerModels(List<String> models) {
method registerModelsClassPath (line 113) | private synchronized void registerModelsClassPath() {
method getColumns (line 125) | private List<String> getColumns(String model_class, boolean server_col...
method onUpgrade (line 140) | @Override
method dropDatabase (line 185) | public void dropDatabase() {
method databaseLocalPath (line 191) | public String databaseLocalPath() {
FILE: app/src/main/java/com/odoo/core/orm/OValues.java
class OValues (line 28) | public class OValues {
method OValues (line 32) | public OValues() {
method put (line 37) | public void put(String key, Object value) {
method get (line 41) | public Object get(String key) {
method getLong (line 45) | public long getLong(String key) {
method getInt (line 52) | public Integer getInt(String key) {
method getString (line 59) | public String getString(String key) {
method getBoolean (line 63) | public Boolean getBoolean(String key) {
method contains (line 67) | public boolean contains(String key) {
method keys (line 71) | public List<String> keys() {
method setAll (line 77) | public void setAll(OValues values) {
method size (line 82) | public int size() {
method toString (line 86) | @Override
method toDataRow (line 91) | public ODataRow toDataRow() {
method toContentValues (line 97) | public ContentValues toContentValues() {
method addAll (line 107) | public void addAll(HashMap<String, Object> data) {
method from (line 111) | public static OValues from(ContentValues contentValues) {
FILE: app/src/main/java/com/odoo/core/orm/ServerDataHelper.java
class ServerDataHelper (line 40) | public class ServerDataHelper {
method ServerDataHelper (line 47) | public ServerDataHelper(Context context, OModel model, OUser user) {
method nameSearch (line 56) | public List<ODataRow> nameSearch(String name, ODomain domain, int limi...
method searchRecords (line 82) | public List<ODataRow> searchRecords(OdooFields fields, ODomain domain,...
method getOdoo (line 101) | public Odoo getOdoo() {
method executeWorkFlow (line 105) | public Object executeWorkFlow(int server_id, String signal) {
method callMethod (line 114) | public Object callMethod(String method, OArguments args) {
method callMethod (line 118) | public Object callMethod(String method, OArguments args, JSONObject co...
method callMethod (line 122) | public Object callMethod(String method, OArguments args,
method callMethod (line 127) | public Object callMethod(String model, String method, OArguments args,
method createOnServer (line 147) | public int createOnServer(JSONObject data) {
method updateOnServer (line 157) | public int updateOnServer(JSONObject data, Integer id) {
FILE: app/src/main/java/com/odoo/core/orm/fields/OColumn.java
class OColumn (line 29) | public class OColumn {
type RelationType (line 34) | public static enum RelationType {
method OColumn (line 61) | public OColumn(String label, Class<?> type) {
method OColumn (line 66) | public OColumn(String label, Class<?> type, RelationType relationType) {
method setName (line 71) | public OColumn setName(String name) {
method getRecordSyncLimit (line 76) | public Integer getRecordSyncLimit() {
method setRecordSyncLimit (line 80) | public OColumn setRecordSyncLimit(Integer recordSyncLimit) {
method getName (line 85) | public String getName() {
method setLabel (line 89) | public OColumn setLabel(String label) {
method getLabel (line 94) | public String getLabel() {
method getRelationType (line 98) | public RelationType getRelationType() {
method setRelatedColumn (line 102) | public OColumn setRelatedColumn(String column) {
method setSize (line 107) | public OColumn setSize(Integer size) {
method getSize (line 112) | public Integer getSize() {
method setDefaultValue (line 116) | public OColumn setDefaultValue(Object defValue) {
method setRequired (line 121) | public OColumn setRequired() {
method isRequired (line 126) | public boolean isRequired() {
method setAutoIncrement (line 130) | public OColumn setAutoIncrement() {
method setLocalColumn (line 135) | public OColumn setLocalColumn() {
method setType (line 140) | public OColumn setType(Class<?> type) {
method getType (line 145) | public Class<?> getType() {
method getDefaultValue (line 149) | public Object getDefaultValue() {
method isAutoIncrement (line 153) | public Boolean isAutoIncrement() {
method isLocal (line 157) | public Boolean isLocal() {
method getRelatedColumn (line 161) | public String getRelatedColumn() {
method addDomain (line 165) | public OColumn addDomain(String column_name, String operator, Object v...
method addDomain (line 171) | public OColumn addDomain(String condition_operator) {
method getDomains (line 177) | public LinkedHashMap<String, ColumnDomain> getDomains() {
method hasDomainFilterColumn (line 184) | public boolean hasDomainFilterColumn() {
method setHasDomainFilterColumn (line 188) | public OColumn setHasDomainFilterColumn(Boolean domainFilterColumn) {
method hasOnChange (line 193) | public boolean hasOnChange() {
method getOnChangeMethod (line 197) | public Method getOnChangeMethod() {
method setOnChangeMethod (line 201) | public void setOnChangeMethod(Method method) {
method isOnChangeBGProcess (line 205) | public Boolean isOnChangeBGProcess() {
method setOnChangeBGProcess (line 209) | public void setOnChangeBGProcess(Boolean process) {
method cleanDomains (line 213) | public void cleanDomains() {
method getFilterDomains (line 217) | public LinkedHashMap<String, ColumnDomain> getFilterDomains() {
method cloneDomain (line 227) | public OColumn cloneDomain(LinkedHashMap<String, ColumnDomain> domains) {
method setFunctionalStore (line 237) | public void setFunctionalStore(Boolean store) {
method canFunctionalStore (line 246) | public Boolean canFunctionalStore() {
method setFunctionalStoreDepends (line 256) | public OColumn setFunctionalStoreDepends(String[] depends) {
method isFunctionalColumn (line 261) | public Boolean isFunctionalColumn() {
method setIsFunctionalColumn (line 265) | public OColumn setIsFunctionalColumn(Boolean is_functional_column) {
method getFunctionalMethod (line 270) | public Method getFunctionalMethod() {
method setFunctionalMethod (line 274) | public OColumn setFunctionalMethod(Method functional_method) {
method getFunctionalStoreDepends (line 284) | public List<String> getFunctionalStoreDepends() {
method getSelectionMap (line 290) | public HashMap<String, String> getSelectionMap() {
method addSelection (line 294) | public OColumn addSelection(String key, String value) {
method toString (line 299) | @Override
class ColumnDomain (line 326) | public class ColumnDomain {
method ColumnDomain (line 333) | public ColumnDomain(String conditional_operator) {
method ColumnDomain (line 337) | public ColumnDomain(String column, String operator, Object value) {
method getColumn (line 343) | public String getColumn() {
method setColumn (line 347) | public void setColumn(String column) {
method getOperator (line 351) | public String getOperator() {
method setOperator (line 355) | public void setOperator(String operator) {
method getValue (line 359) | public Object getValue() {
method setValue (line 363) | public void setValue(Object value) {
method getConditionalOperator (line 367) | public String getConditionalOperator() {
method setConditionalOperator (line 371) | public void setConditionalOperator(String conditional_operator) {
method toString (line 376) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OBlob.java
class OBlob (line 22) | public class OBlob extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OBoolean.java
class OBoolean (line 22) | public class OBoolean extends OTypeHelper {
method getFieldType (line 25) | @Override
method getFieldSize (line 30) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/ODate.java
class ODate (line 24) | public class ODate extends OTypeHelper {
method getFieldType (line 27) | @Override
method getDataFormat (line 32) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/ODateTime.java
class ODateTime (line 24) | public class ODateTime extends OTypeHelper {
method getFieldType (line 27) | @Override
method getDataFormat (line 32) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OFloat.java
class OFloat (line 22) | public class OFloat extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OHtml.java
class OHtml (line 22) | public class OHtml extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OInteger.java
class OInteger (line 22) | public class OInteger extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OSelection.java
class OSelection (line 22) | public class OSelection extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OText.java
class OText (line 22) | public class OText extends OTypeHelper {
method getFieldType (line 25) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OTimestamp.java
class OTimestamp (line 22) | public class OTimestamp extends ODateTime {
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OTypeHelper.java
class OTypeHelper (line 22) | public abstract class OTypeHelper {
method equals (line 25) | public final boolean equals(String type) {
method getType (line 29) | public final String getType() {
method setSize (line 37) | public void setSize(Integer size) {
method getFieldType (line 42) | public abstract String getFieldType();
method getFieldSize (line 44) | public Integer getFieldSize() {
method getDataFormat (line 48) | public String getDataFormat() {
method toString (line 52) | @Override
FILE: app/src/main/java/com/odoo/core/orm/fields/types/OVarchar.java
class OVarchar (line 22) | public class OVarchar extends OTypeHelper {
method getFieldType (line 25) | @Override
method getFieldSize (line 30) | @Override
FILE: app/src/main/java/com/odoo/core/orm/provider/BaseModelProvider.java
class BaseModelProvider (line 43) | public class BaseModelProvider extends ContentProvider {
method buildURI (line 52) | public static Uri buildURI(String authority, String model, String user...
method onCreate (line 62) | @Override
method authority (line 67) | public String authority() {
method getUser (line 71) | public OUser getUser(Uri uri) {
method setModel (line 76) | public void setModel(Uri uri) {
method setMatcher (line 83) | private void setMatcher(Uri uri) {
method query (line 89) | @Override
method removeRelationColumns (line 126) | private String[] removeRelationColumns(String[] projection) {
method getType (line 143) | @Override
method insert (line 148) | @Override
method delete (line 183) | @Override
method update (line 208) | @Override
method storeUpdateRelationRecords (line 250) | private void storeUpdateRelationRecords(ContentValues values, String s...
method generateValues (line 263) | private ContentValues[] generateValues(ContentValues values) {
method notifyDataChange (line 283) | private void notifyDataChange(Uri uri) {
FILE: app/src/main/java/com/odoo/core/service/ISyncFinishListener.java
type ISyncFinishListener (line 26) | public interface ISyncFinishListener {
method performNextSync (line 27) | public OSyncAdapter performNextSync(OUser user, SyncResult syncResult);
FILE: app/src/main/java/com/odoo/core/service/ISyncServiceListener.java
type ISyncServiceListener (line 22) | public interface ISyncServiceListener {
method onSyncStarted (line 23) | public void onSyncStarted();
method onSyncFinished (line 25) | public void onSyncFinished();
FILE: app/src/main/java/com/odoo/core/service/OSyncAdapter.java
class OSyncAdapter (line 59) | public class OSyncAdapter extends AbstractThreadedSyncAdapter {
method OSyncAdapter (line 76) | public OSyncAdapter(Context context, Class<? extends OModel> model, OS...
method OSyncAdapter (line 82) | public OSyncAdapter(Context context, Class<? extends OModel> model, OS...
method init (line 88) | private void init(Context context, Class<? extends OModel> model, OSyn...
method setDomain (line 96) | public OSyncAdapter setDomain(ODomain domain) {
method checkForWriteCreateDate (line 101) | public OSyncAdapter checkForWriteCreateDate(Boolean check) {
method syncDataLimit (line 106) | public OSyncAdapter syncDataLimit(Integer dataLimit) {
method onPerformSync (line 111) | @Override
method syncData (line 137) | private void syncData(OModel model, OUser user, ODomain domain_filter,
method showSignInErrorNotification (line 237) | private void showSignInErrorNotification(OUser user) {
method handleRelationRecords (line 273) | private void handleRelationRecords(OUser user,
method createOdooInstance (line 308) | public static Odoo createOdooInstance(Context context, OUser user) {
method getFields (line 341) | private JSONObject getFields(OModel model) {
method createRecordsOnServer (line 358) | private void createRecordsOnServer(OModel model) {
method validateRelationRecords (line 396) | public boolean validateRelationRecords(OModel model, ODataRow row) {
method updateRecordServerId (line 448) | private void updateRecordServerId(OModel model, int row_id, int server...
method createOnServer (line 455) | private int createOnServer(OModel model, JSONObject values) {
method removeRecordOnServer (line 474) | private void removeRecordOnServer(OModel model) {
method removeRecordsFromServer (line 491) | private boolean removeRecordsFromServer(OModel model, List<Integer> se...
method removeNonExistRecordFromLocal (line 506) | private void removeNonExistRecordFromLocal(OModel model) {
method getModelClass (line 530) | public Class<? extends OModel> getModelClass() {
method setModel (line 534) | public void setModel(OModel model) {
method getModel (line 538) | public OModel getModel() {
method onSyncFinish (line 542) | public OSyncAdapter onSyncFinish(ISyncFinishListener syncFinish) {
FILE: app/src/main/java/com/odoo/core/service/OSyncDataUtils.java
class OSyncDataUtils (line 49) | public class OSyncDataUtils {
method OSyncDataUtils (line 62) | public OSyncDataUtils(Context context, Odoo odoo, OModel model, OUser ...
method checkLocalUpdatedRecords (line 76) | private JSONArray checkLocalUpdatedRecords() {
method getWriteDate (line 137) | private HashMap<String, String> getWriteDate(OModel model, List<Intege...
method handleResult (line 164) | private void handleResult(JSONArray records) {
method updateRecordsOnServer (line 292) | public boolean updateRecordsOnServer(OSyncAdapter adapter) {
method addUpdateRelationRecord (line 323) | private void addUpdateRelationRecord(OModel baseModel, String relTable...
method getRelationRecordsHashMap (line 337) | public HashMap<String, SyncRelationRecords> getRelationRecordsHashMap() {
method finalize (line 343) | @Override
class SyncRelationRecords (line 350) | public static class SyncRelationRecords {
method SyncRelationRecords (line 358) | public SyncRelationRecords(OModel baseModel, Class<?> relationModel,...
method getBaseModel (line 368) | public OModel getBaseModel() {
method setBaseModel (line 372) | public void setBaseModel(OModel baseModel) {
method getRelationModel (line 376) | public Class<?> getRelationModel() {
method setRelationModel (line 380) | public void setRelationModel(Class<?> relationModel) {
method getRelationColumn (line 384) | public String getRelationColumn() {
method setRelationColumn (line 388) | public void setRelationColumn(String relationColumn) {
method getRelatedColumn (line 393) | public String getRelatedColumn() {
method setRelatedColumn (line 397) | public void setRelatedColumn(String relatedColumn) {
method getRelationType (line 401) | public OColumn.RelationType getRelationType() {
method setRelationType (line 405) | public void setRelationType(OColumn.RelationType relationType) {
method getServerIds (line 409) | public List<Integer> getServerIds() {
method setServerIds (line 413) | public void setServerIds(List<Integer> serverIds) {
method updateIds (line 418) | public void updateIds(List<Integer> ids) {
method getUniqueIds (line 423) | public List<Integer> getUniqueIds() {
FILE: app/src/main/java/com/odoo/core/service/OSyncService.java
class OSyncService (line 33) | public abstract class OSyncService extends Service {
method onCreate (line 40) | @Override
method setService (line 53) | public void setService(OSyncService service) {
method setContext (line 57) | public void setContext(Context context) {
method onDestroy (line 61) | @Override
method onBind (line 70) | @Override
method getSyncAdapter (line 75) | public abstract OSyncAdapter getSyncAdapter(OSyncService service, Cont...
method performDataSync (line 77) | public abstract void performDataSync(OSyncAdapter adapter, Bundle extr...
FILE: app/src/main/java/com/odoo/core/service/receivers/ISyncFinishReceiver.java
class ISyncFinishReceiver (line 24) | public abstract class ISyncFinishReceiver extends BroadcastReceiver {
FILE: app/src/main/java/com/odoo/core/support/OUser.java
class OUser (line 29) | public class OUser {
method current (line 136) | public static OUser current(Context context) {
method getName (line 145) | public String getName() {
method setName (line 154) | public void setName(String name) {
method getCompany_id (line 163) | public String getCompany_id() {
method setCompany_id (line 172) | public void setCompany_id(String company_id) {
method getAsBundle (line 181) | public Bundle getAsBundle() {
method setFromBundle (line 211) | public void setFromBundle(Bundle data) {
method fillFromAccount (line 242) | public void fillFromAccount(AccountManager accMgr, Account account) {
method getPassword (line 282) | public String getPassword() {
method setPassword (line 291) | public void setPassword(String password) {
method getAndroidName (line 300) | public String getAndroidName() {
method setAndroidName (line 309) | public void setAndroidName(String android_name) {
method getUsername (line 318) | public String getUsername() {
method setUsername (line 327) | public void setUsername(String username) {
method getUser_id (line 336) | public int getUser_id() {
method setUser_id (line 345) | public void setUser_id(int user_id) {
method getPartner_id (line 354) | public int getPartner_id() {
method setPartner_id (line 363) | public void setPartner_id(int partner_id) {
method getTimezone (line 372) | public String getTimezone() {
method setTimezone (line 381) | public void setTimezone(String timezone) {
method isIsactive (line 390) | public boolean isIsactive() {
method setIsactive (line 399) | public void setIsactive(boolean isactive) {
method getAvatar (line 408) | public String getAvatar() {
method setAvatar (line 417) | public void setAvatar(String avatar) {
method getDatabase (line 426) | public String getDatabase() {
method setDatabase (line 435) | public void setDatabase(String database) {
method getHost (line 444) | public String getHost() {
method setHost (line 453) | public void setHost(String host) {
method isAllowSelfSignedSSL (line 462) | public boolean isAllowSelfSignedSSL() {
method setAllowSelfSignedSSL (line 471) | public void setAllowSelfSignedSSL(boolean allow_self_signed_ssl) {
method isOAauthLogin (line 480) | public boolean isOAauthLogin() {
method setOAuthLogin (line 489) | public void setOAuthLogin(boolean oauth_login) {
method getInstanceUrl (line 498) | public String getInstanceUrl() {
method setInstanceUrl (line 507) | public void setInstanceUrl(String instnace_url) {
method getInstanceDatabase (line 516) | public String getInstanceDatabase() {
method setInstanceDatabase (line 525) | public void setInstanceDatabase(String instance_database) {
method getClientId (line 534) | public String getClientId() {
method setClientId (line 543) | public void setClientId(String client_id) {
method getVersion_number (line 547) | public Integer getVersion_number() {
method setVersion_number (line 551) | public void setVersion_number(Integer version_number) {
method getVersion_serie (line 555) | public String getVersion_serie() {
method setVersion_serie (line 559) | public void setVersion_serie(String version_serie) {
method getDBName (line 563) | public String getDBName() {
method toString (line 570) | @Override
method getAccount (line 575) | public Account getAccount() {
method setAccount (line 579) | public void setAccount(Account account) {
FILE: app/src/main/java/com/odoo/core/support/OdooFields.java
class OdooFields (line 29) | public class OdooFields {
method OdooFields (line 33) | public OdooFields(List<OColumn> columns) {
method OdooFields (line 45) | public OdooFields(String[] fields) {
method addAll (line 49) | public void addAll(String[] fields) {
method get (line 62) | public JSONObject get() {
FILE: app/src/main/java/com/odoo/core/support/OdooInstancesSelectorDialog.java
class OdooInstancesSelectorDialog (line 46) | public class OdooInstancesSelectorDialog implements AdapterView.OnItemCl...
method OdooInstancesSelectorDialog (line 57) | public OdooInstancesSelectorDialog(Context context, OUser user) {
method setInstances (line 80) | public void setInstances(List<OdooInstance> items) {
method generateView (line 86) | private void generateView(int position, View view, OdooInstance instan...
method showDialog (line 96) | public void showDialog() {
method onItemClick (line 117) | @Override
method setOnInstanceSelectListener (line 130) | public void setOnInstanceSelectListener(OnInstanceSelectListener liste...
type OnInstanceSelectListener (line 134) | public interface OnInstanceSelectListener {
method instanceSelected (line 135) | public void instanceSelected(OdooInstance instance, OUser user);
method canceledInstanceSelect (line 137) | public void canceledInstanceSelect();
class ImageLoader (line 140) | class ImageLoader extends AsyncTask<Void, Void, Void> {
method ImageLoader (line 147) | public ImageLoader(int pos, String url, int image_view) {
method doInBackground (line 153) | @Override
method onPostExecute (line 164) | @Override
FILE: app/src/main/java/com/odoo/core/support/OdooLoginHelper.java
class OdooLoginHelper (line 39) | public class OdooLoginHelper {
method OdooLoginHelper (line 44) | public OdooLoginHelper(Context context) {
method login (line 49) | public OUser login(String username, String password, String database, ...
method instanceLogin (line 77) | public OUser instanceLogin(OdooInstance instance, OUser uData) throws ...
method getUserDetails (line 97) | private OUser getUserDetails(ODomain domain, OUser data, OdooInstance ...
method androidName (line 132) | public String androidName(String username, String database) {
method getOdooInstances (line 136) | public List<OdooInstance> getOdooInstances(OUser user) {
FILE: app/src/main/java/com/odoo/core/support/OdooServerTester.java
class OdooServerTester (line 36) | public class OdooServerTester {
method OdooServerTester (line 42) | public OdooServerTester(Context context) {
method testConnection (line 46) | public boolean testConnection(String serverURL, Boolean forceConnect) ...
method getDatabases (line 71) | public List<String> getDatabases() {
FILE: app/src/main/java/com/odoo/core/support/OdooUserLoginSelectorDialog.java
class OdooUserLoginSelectorDialog (line 46) | public class OdooUserLoginSelectorDialog implements AdapterView.OnItemCl...
method OdooUserLoginSelectorDialog (line 56) | public OdooUserLoginSelectorDialog(Context context) {
method generateView (line 80) | private void generateView(int position, View view, OUser user) {
method setUserLoginSelectListener (line 94) | public void setUserLoginSelectListener(IUserLoginSelectListener listen...
method show (line 99) | public void show() {
method onItemClick (line 131) | @Override
type IUserLoginSelectListener (line 165) | public interface IUserLoginSelectListener {
method onUserSelected (line 166) | public void onUserSelected(OUser user);
method onNewAccountRequest (line 168) | public void onNewAccountRequest();
method onCancelSelect (line 170) | public void onCancelSelect();
method onRequestAccountSelect (line 172) | public void onRequestAccountSelect();
FILE: app/src/main/java/com/odoo/core/support/addons/AddonsHelper.java
class AddonsHelper (line 28) | public class AddonsHelper {
method getAddons (line 34) | public List<OAddon> getAddons() {
method prepareAddons (line 41) | private void prepareAddons() {
method getDefaultAddon (line 61) | public OAddon getDefaultAddon() {
FILE: app/src/main/java/com/odoo/core/support/addons/OAddon.java
class OAddon (line 24) | public class OAddon {
method OAddon (line 29) | public OAddon(Class<?> addon_class) {
method setDefault (line 33) | public OAddon setDefault() {
method get (line 38) | public Object get() {
method isDefault (line 47) | public Boolean isDefault() {
FILE: app/src/main/java/com/odoo/core/support/addons/fragment/BaseFragment.java
class BaseFragment (line 48) | public abstract class BaseFragment extends Fragment implements IBaseFrag...
method onCreate (line 60) | @Override
method setTitle (line 67) | public void setTitle(String title) {
method db (line 71) | public OModel db() {
method user (line 79) | public OUser user() {
method parent (line 85) | public OdooActivity parent() {
method _s (line 89) | public String _s(int res_id) {
method _c (line 93) | public int _c(int res_id) {
method _dim (line 97) | public int _dim(int res_id) {
method setHasSyncStatusObserver (line 102) | public void setHasSyncStatusObserver(String drawerRefreshTag, ISyncSta...
method onStatusChanged (line 111) | @Override
method setHasSwipeRefreshView (line 131) | public void setHasSwipeRefreshView(View parent, int resource_id,
method setSwipeRefreshing (line 141) | public void setSwipeRefreshing(boolean refreshing) {
method hideRefreshingProgress (line 146) | public void hideRefreshingProgress() {
method inNetwork (line 157) | public boolean inNetwork() {
method onPause (line 162) | @Override
method onDestroy (line 176) | @Override
method onNavSpinnerDestroy (line 182) | protected void onNavSpinnerDestroy() {
method onResume (line 189) | @Override
method setHasSearchView (line 205) | public void setHasSearchView(IOnSearchViewChangeListener listener,
method onClose (line 219) | @Override
method onQueryTextChange (line 232) | public boolean onQueryTextChange(String newText) {
method onQueryTextSubmit (line 238) | @Override
method setHasFloatingButton (line 245) | public void setHasFloatingButton(View view, int res_id, ListView list,
method hideFab (line 255) | public void hideFab() {
method showFab (line 261) | public void showFab() {
method onReceive (line 268) | @Override
method startFragment (line 276) | public void startFragment(Fragment fragment, Boolean addToBackState, B...
method startFragment (line 280) | public void startFragment(Fragment fragment, Boolean addToBackState) {
FILE: app/src/main/java/com/odoo/core/support/addons/fragment/IBaseFragment.java
type IBaseFragment (line 28) | public interface IBaseFragment {
method drawerMenus (line 29) | public List<ODrawerItem> drawerMenus(Context context);
method database (line 31) | public <T> Class<T> database();
FILE: app/src/main/java/com/odoo/core/support/addons/fragment/IOnSearchViewChangeListener.java
type IOnSearchViewChangeListener (line 22) | public interface IOnSearchViewChangeListener {
method onSearchViewTextChange (line 25) | public boolean onSearchViewTextChange(String newFilter);
method onSearchViewClose (line 27) | public void onSearchViewClose();
FILE: app/src/main/java/com/odoo/core/support/addons/fragment/ISyncStatusObserverListener.java
type ISyncStatusObserverListener (line 22) | public interface ISyncStatusObserverListener {
method onStatusChange (line 25) | public void onStatusChange(Boolean refreshing);
FILE: app/src/main/java/com/odoo/core/support/drawer/ODrawerItem.java
class ODrawerItem (line 27) | public class ODrawerItem implements Serializable {
method ODrawerItem (line 36) | public ODrawerItem(String key) {
method setTitle (line 41) | public ODrawerItem setTitle(String title) {
method getTitle (line 48) | public String getTitle() {
method setIcon (line 52) | public ODrawerItem setIcon(int icon) {
method getIcon (line 57) | public Integer getIcon() {
method setCounter (line 61) | public ODrawerItem setCounter(int counter) {
method getCounter (line 66) | public Integer getCounter() {
method setInstance (line 70) | public ODrawerItem setInstance(Object instance) {
method getInstance (line 75) | public Object getInstance() {
method setGroupTitle (line 79) | public ODrawerItem setGroupTitle() {
method isGroupTitle (line 84) | public Boolean isGroupTitle() {
method setExtra (line 88) | public ODrawerItem setExtra(Bundle bundle) {
method getExtra (line 93) | public Bundle getExtra() {
method getKey (line 97) | public String getKey() {
FILE: app/src/main/java/com/odoo/core/support/list/IOnItemClickListener.java
type IOnItemClickListener (line 24) | public interface IOnItemClickListener {
method onItemDoubleClick (line 25) | public void onItemDoubleClick(View view, int position);
method onItemClick (line 27) | public void onItemClick(View view, int position);
FILE: app/src/main/java/com/odoo/core/support/list/OCursorListAdapter.java
class OCursorListAdapter (line 43) | public class OCursorListAdapter extends CursorAdapter implements
method OCursorListAdapter (line 63) | public OCursorListAdapter(Context context, Cursor c, int layout) {
method allowCacheView (line 70) | public OCursorListAdapter allowCacheView(Boolean cache) {
method getCachedView (line 75) | public View getCachedView(Cursor cr) {
method bindView (line 83) | @Override
method getView (line 101) | @Override
method getValue (line 140) | private Object getValue(Cursor c, String column) {
method newView (line 161) | @Override
method notifyDataSetChanged (line 184) | @Override
method inflate (line 209) | public View inflate(int resource, ViewGroup viewGroup) {
method getResource (line 213) | public int getResource() {
method setOnRowViewClickListener (line 217) | public void setOnRowViewClickListener(int view_id,
method setOnViewCreateListener (line 222) | public void setOnViewCreateListener(OnViewCreateListener viewCreateLis...
method setOnViewBindListener (line 226) | public void setOnViewBindListener(OnViewBindListener bindListener) {
method setBeforeBindUpdateData (line 230) | public void setBeforeBindUpdateData(BeforeBindUpdateData updater) {
type OnRowViewClickListener (line 234) | public interface OnRowViewClickListener {
method onRowViewClick (line 235) | public void onRowViewClick(int position, Cursor cursor, View view,
type OnViewBindListener (line 239) | public interface OnViewBindListener {
method onViewBind (line 240) | public void onViewBind(View view, Cursor cursor, ODataRow row);
type BeforeBindUpdateData (line 243) | public interface BeforeBindUpdateData {
method updateDataRow (line 244) | public ODataRow updateDataRow(Cursor cr);
type OnViewCreateListener (line 247) | public interface OnViewCreateListener {
method onViewCreated (line 248) | public View onViewCreated(Context context, ViewGroup view, Cursor cr,
method handleItemClickListener (line 252) | public void handleItemClickListener(AbsListView absListView, IOnItemCl...
method onItemClick (line 263) | @Override
method setHasSectionIndexers (line 284) | public void setHasSectionIndexers(boolean hasSectionIndexers, String o...
method getSections (line 290) | @Override
method getPositionForSection (line 295) | @Override
method getSectionForPosition (line 300) | @Override
FILE: app/src/main/java/com/odoo/core/support/list/OListAdapter.java
class OListAdapter (line 31) | public class OListAdapter extends ArrayAdapter<Object> {
method OListAdapter (line 42) | public OListAdapter(Context context, int resource, List<Object> object...
method getFilter (line 51) | @Override
method getResource (line 59) | public int getResource() {
method replaceObjectAtPosition (line 63) | public void replaceObjectAtPosition(int position, Object object) {
method notifiyDataChange (line 70) | public void notifiyDataChange(List<Object> objects) {
class RowFilter (line 79) | class RowFilter extends Filter {
method performFiltering (line 81) | @Override
method publishResults (line 111) | @SuppressWarnings("unchecked")
method setOnSearchChange (line 125) | public void setOnSearchChange(OnSearchChange callback) {
method setRowFilterTextListener (line 129) | public void setRowFilterTextListener(RowFilterTextListener listener) {
type RowFilterTextListener (line 133) | public interface RowFilterTextListener {
method filterCompareWith (line 135) | public String filterCompareWith(Object object);
type OnSearchChange (line 138) | public interface OnSearchChange {
method onSearchChange (line 140) | public void onSearchChange(List<Object> newRecords);
FILE: app/src/main/java/com/odoo/core/support/sync/SyncUtils.java
class SyncUtils (line 30) | public class SyncUtils {
method SyncUtils (line 36) | public SyncUtils(Context context, OUser user) {
method get (line 41) | public static SyncUtils get(Context context) {
method get (line 45) | public static SyncUtils get(Context context, OUser user) {
method setAutoSync (line 49) | public void setAutoSync(String authority, boolean autoSync) {
method requestSync (line 61) | public void requestSync(String authority) {
method requestSync (line 65) | public void requestSync(String authority, Bundle bundle) {
method setSyncPeriodic (line 76) | public void setSyncPeriodic(String authority, long interval_in_minute,
method cancelSync (line 89) | public void cancelSync(String authority) {
FILE: app/src/main/java/com/odoo/core/utils/BitmapUtils.java
class BitmapUtils (line 43) | public class BitmapUtils {
method readBytes (line 54) | private static byte[] readBytes(Uri uri, ContentResolver resolver, boo...
method uriToBase64 (line 89) | public static String uriToBase64(Uri uri, ContentResolver resolver) {
method uriToBase64 (line 93) | public static String uriToBase64(Uri uri, ContentResolver resolver, bo...
method getBitmapImage (line 111) | public static Bitmap getBitmapImage(Context context, String base64) {
method getAlphabetImage (line 118) | public static Bitmap getAlphabetImage(Context context, String content) {
FILE: app/src/main/java/com/odoo/core/utils/IntentUtils.java
class IntentUtils (line 27) | public class IntentUtils {
method openURLInBrowser (line 29) | public static void openURLInBrowser(Context context, String url) {
method startActivity (line 39) | public static void startActivity(Context context, Class<?> activity_cl...
method redirectToMap (line 46) | public static void redirectToMap(Context context, String location) {
method requestMessage (line 54) | public static void requestMessage(Context context, String email) {
method requestCall (line 64) | public static void requestCall(Context context, String number) {
method startContactIntent (line 72) | public static void startContactIntent(Context context, String number) {
FILE: app/src/main/java/com/odoo/core/utils/JSONUtils.java
class JSONUtils (line 17) | public class JSONUtils {
method toList (line 18) | public static <T> List<T> toList(JSONArray array) {
method toArray (line 32) | public static <T> JSONArray toArray(List<T> list) {
method toList (line 43) | public static <T> List<T> toList(String list_data) {
method toDataRow (line 53) | public static ODataRow toDataRow(JSONObject json) {
method toJSONObject (line 68) | public static JSONObject toJSONObject(ODataRow row) {
method createJSONValues (line 80) | public static JSONObject createJSONValues(OModel model, ODataRow row) {
FILE: app/src/main/java/com/odoo/core/utils/OActionBarUtils.java
class OActionBarUtils (line 28) | public class OActionBarUtils {
method setActionBar (line 30) | public static void setActionBar(ActionBarActivity activity, Boolean wi...
FILE: app/src/main/java/com/odoo/core/utils/OAlert.java
class OAlert (line 32) | public class OAlert {
type Type (line 35) | private enum Type {
type ConfirmType (line 39) | public static enum ConfirmType {
method showAlert (line 43) | public static void showAlert(Context context, String message) {
method showWarning (line 47) | public static void showWarning(Context context, String message) {
method showError (line 51) | public static void showError(Context context, String message) {
method showAlert (line 55) | public static void showAlert(Context context, String message, OnAlertD...
method showWarning (line 59) | public static void showWarning(Context context, String message, OnAler...
method showError (line 63) | public static void showError(Context context, String message, OnAlertD...
method show (line 67) | private static void show(Context context, String message, Type type, f...
method showConfirm (line 93) | public static void showConfirm(Context context, String message, final ...
method inputDialog (line 124) | public static void inputDialog(Context context, String title, final On...
type OnAlertConfirmListener (line 161) | public static interface OnAlertConfirmListener {
method onConfirmChoiceSelect (line 162) | public void onConfirmChoiceSelect(ConfirmType type);
type OnAlertDismissListener (line 165) | public static interface OnAlertDismissListener {
method onAlertDismiss (line 166) | public void onAlertDismiss();
type OnUserInputListener (line 169) | public static interface OnUserInputListener {
method onViewCreated (line 170) | public void onViewCreated(EditText inputView);
method onUserInputted (line 172) | public void onUserInputted(Object value);
FILE: app/src/main/java/com/odoo/core/utils/OAlertDialog.java
class OAlertDialog (line 27) | public class OAlertDialog {
method OAlertDialog (line 33) | public OAlertDialog(Context context) {
method setTitle (line 37) | public OAlertDialog setTitle(String title) {
method setCancelable (line 42) | public OAlertDialog setCancelable(Boolean cancelable) {
method setMessage (line 47) | public OAlertDialog setMessage(String message) {
method show (line 52) | public void show() {
FILE: app/src/main/java/com/odoo/core/utils/OControls.java
class OControls (line 9) | public class OControls {
method setText (line 11) | public static void setText(View parent_view, int textview_id, Object v...
method getText (line 19) | public static String getText(View parent_view, int textview_id) {
method toggleViewVisibility (line 24) | public static void toggleViewVisibility(View parent_view, int view_id,
method setImage (line 31) | public static void setImage(View parent_view, int imageview_id,
method setImage (line 37) | public static void setImage(View parent_view, int imageview_id,
method setVisible (line 43) | public static void setVisible(View parent_view, int resource_id) {
method setInvisible (line 49) | public static void setInvisible(View parent_view, int resource_id) {
method setGone (line 53) | public static void setGone(View parent_view, int resource_id) {
method setTextViewStrikeThrough (line 58) | public static void setTextViewStrikeThrough(View parent, int res_id) {
method setTextColor (line 64) | public static void setTextColor(View parent, int txv_id, int color) {
FILE: app/src/main/java/com/odoo/core/utils/OCursorUtils.java
class OCursorUtils (line 26) | public class OCursorUtils {
method toDatarow (line 29) | public static ODataRow toDatarow(Cursor cr) {
method cursorValue (line 37) | public static Object cursorValue(String column, Cursor cr) {
FILE: app/src/main/java/com/odoo/core/utils/ODateUtils.java
class ODateUtils (line 31) | public class ODateUtils {
method getDate (line 43) | public static String getDate() {
method getDate (line 53) | public static String getDate(String format) {
method getDate (line 64) | public static String getDate(Date date, String defaultFormat) {
method getUTCDate (line 73) | public static String getUTCDate() {
method getUTCDate (line 83) | public static String getUTCDate(String format) {
method getUTCDate (line 94) | public static String getUTCDate(Date date, String defaultFormat) {
method convertToDefault (line 106) | public static String convertToDefault(String date, String dateFormat) {
method convertToDefault (line 118) | public static String convertToDefault(String date, String dateFormat, ...
method convertToUTC (line 129) | public static String convertToUTC(String date, String dateFormat) {
method convertToUTC (line 141) | public static String convertToUTC(String date, String dateFormat, Stri...
method parseDate (line 145) | public static String parseDate(String date, String dateFormat, String ...
method createDateObject (line 157) | public static Date createDateObject(String date, String dateFormat, Bo...
method getDateBefore (line 177) | public static String getDateBefore(int days) {
method setDateTime (line 190) | public static Date setDateTime(Date originalDate, int hour, int minute...
method getDateDayBeforeAfterUTC (line 200) | public static String getDateDayBeforeAfterUTC(String utcDate, int days) {
method getDateDayBefore (line 208) | public static Date getDateDayBefore(Date originalDate, int days) {
method getCurrentDateWithHour (line 215) | public static String getCurrentDateWithHour(int addHour) {
method getDateMinuteBefore (line 223) | public static Date getDateMinuteBefore(Date originalDate, int minutes) {
method createDate (line 230) | private static String createDate(Date date, String defaultFormat, Bool...
method floatToDuration (line 238) | public static String floatToDuration(String duration_in_float) {
method durationToFloat (line 246) | public static String durationToFloat(String duration) {
method durationToFloat (line 262) | public static String durationToFloat(long milliseconds) {
FILE: app/src/main/java/com/odoo/core/utils/OFragmentUtils.java
class OFragmentUtils (line 32) | public class OFragmentUtils {
method OFragmentUtils (line 40) | public OFragmentUtils(ActionBarActivity activity, Bundle savedInstance) {
method get (line 46) | public static OFragmentUtils get(ActionBarActivity activity, Bundle sa...
method startFragment (line 50) | public void startFragment(Fragment fragment, boolean addToBackState, B...
method loadFragment (line 60) | private void loadFragment(Fragment fragment, Boolean addToBackState) {
FILE: app/src/main/java/com/odoo/core/utils/OListUtils.java
class OListUtils (line 25) | public class OListUtils {
method toStringList (line 29) | public static List<String> toStringList(List<Integer> list) {
FILE: app/src/main/java/com/odoo/core/utils/OPreferenceManager.java
class OPreferenceManager (line 30) | public class OPreferenceManager {
method OPreferenceManager (line 34) | public OPreferenceManager(Context context) {
method putString (line 39) | public void putString(String key, String value) {
method putStringSet (line 45) | public boolean putStringSet(String key, List<String> values) {
method getStringSet (line 51) | public List<String> getStringSet(String key) {
method getString (line 59) | public String getString(String key, String default_value) {
method getInt (line 63) | public int getInt(String key, int default_value) {
method setBoolean (line 67) | public void setBoolean(String key, Boolean value) {
method getBoolean (line 73) | public boolean getBoolean(String key, boolean defValue) {
FILE: app/src/main/java/com/odoo/core/utils/OResource.java
class OResource (line 24) | public class OResource {
method string (line 25) | public static String string(Context context, int res_id) {
method dimen (line 29) | public static Integer dimen(Context context, int res_id) {
method color (line 33) | public static int color(Context context, int res_id) {
FILE: app/src/main/java/com/odoo/core/utils/OStorageUtils.java
class OStorageUtils (line 26) | public class OStorageUtils {
method getDirectoryPath (line 29) | public static String getDirectoryPath(String file_type) {
FILE: app/src/main/java/com/odoo/core/utils/OStringColorUtil.java
class OStringColorUtil (line 31) | public class OStringColorUtil {
method getStringColor (line 34) | public static int getStringColor(Context context, String content) {
FILE: app/src/main/java/com/odoo/core/utils/StringUtils.java
class StringUtils (line 25) | public class StringUtils {
method repeat (line 28) | public static String repeat(String string, int repeat) {
method capitalizeString (line 35) | public static String capitalizeString(String string) {
method htmlToString (line 56) | public static String htmlToString(String html) {
method stringToHtml (line 69) | public static Spanned stringToHtml(String string) {
FILE: app/src/main/java/com/odoo/core/utils/controls/ExpandableHeightGridView.java
class ExpandableHeightGridView (line 26) | public class ExpandableHeightGridView extends GridView {
method ExpandableHeightGridView (line 30) | public ExpandableHeightGridView(Context context) {
method ExpandableHeightGridView (line 34) | public ExpandableHeightGridView(Context context, AttributeSet attrs) {
method ExpandableHeightGridView (line 38) | public ExpandableHeightGridView(Context context, AttributeSet attrs,
method isExpanded (line 43) | public boolean isExpanded() {
method onMeasure (line 47) | @Override
method setExpanded (line 61) | public void setExpanded(boolean expanded) {
FILE: app/src/main/java/com/odoo/core/utils/dialog/OChoiceDialog.java
class OChoiceDialog (line 29) | public class OChoiceDialog implements DialogInterface.OnClickListener {
method OChoiceDialog (line 38) | public OChoiceDialog(Context context) {
method get (line 43) | public static OChoiceDialog get(Context context) {
method withTitle (line 47) | public OChoiceDialog withTitle(String title) {
method withOptions (line 52) | public OChoiceDialog withOptions(List<String> options, int selected) {
method show (line 58) | public void show(OnChoiceSelectListener listener) {
method onClick (line 67) | @Override
type OnChoiceSelectListener (line 75) | public interface OnChoiceSelectListener {
method choiceSelected (line 76) | public void choiceSelected(int position, String value);
FILE: app/src/main/java/com/odoo/core/utils/drawer/DrawerUtils.java
class DrawerUtils (line 48) | public class DrawerUtils {
method getDrawerItems (line 50) | public static List<ODrawerItem> getDrawerItems(Context context) {
method baseSettingsItems (line 65) | public static List<ODrawerItem> baseSettingsItems(Context context) {
method fillDrawerItemValue (line 89) | public static View fillDrawerItemValue(View view, ODrawerItem item) {
method getDefaultDrawerFragment (line 105) | public static IBaseFragment getDefaultDrawerFragment() {
method getStartableObject (line 113) | public static ODrawerItem getStartableObject(Context context, IBaseFra...
method focusOnView (line 125) | public static void focusOnView(Context context, View view, boolean foc...
method findItemIndex (line 147) | public static Integer findItemIndex(ODrawerItem item, LinearLayout ite...
FILE: app/src/main/java/com/odoo/core/utils/drawer/ODrawerScrollView.java
class ODrawerScrollView (line 14) | public class ODrawerScrollView extends ScrollView {
method ODrawerScrollView (line 21) | public ODrawerScrollView(Context context) {
method ODrawerScrollView (line 26) | public ODrawerScrollView(Context context, AttributeSet attrs) {
method ODrawerScrollView (line 31) | public ODrawerScrollView(Context context, AttributeSet attrs, int defS...
method init (line 36) | private void init(Context context, AttributeSet attrs, int defStyle) {
method fitSystemWindows (line 49) | @Override
method draw (line 60) | @Override
method onAttachedToWindow (line 96) | @Override
method onDetachedFromWindow (line 104) | @Override
method setOnInsetsCallback (line 119) | public void setOnInsetsCallback(OnInsetsCallback onInsetsCallback) {
type OnInsetsCallback (line 123) | public static interface OnInsetsCallback {
method onInsetsChanged (line 124) | public void onInsetsChanged(Rect insets);
FILE: app/src/main/java/com/odoo/core/utils/logger/OLog.java
class OLog (line 24) | public class OLog {
method log (line 26) | public static void log(String... messages) {
FILE: app/src/main/java/com/odoo/core/utils/notification/ONotificationBuilder.java
class ONotificationBuilder (line 44) | public class ONotificationBuilder {
method ONotificationBuilder (line 67) | public ONotificationBuilder(Context context, int notification_id) {
method setTitle (line 73) | public ONotificationBuilder setTitle(String title) {
method setText (line 78) | public ONotificationBuilder setText(String text) {
method setIcon (line 83) | public ONotificationBuilder setIcon(int res_id) {
method withLargeIcon (line 88) | public ONotificationBuilder withLargeIcon(boolean largeIcon) {
method withLargeIcon (line 93) | public boolean withLargeIcon() {
method withRingTone (line 97) | public ONotificationBuilder withRingTone(Boolean ringTone) {
method withRingTone (line 102) | public boolean withRingTone() {
method setBigPicture (line 106) | public ONotificationBuilder setBigPicture(Bitmap bitmap) {
method setBigText (line 111) | public ONotificationBuilder setBigText(String bigText) {
method setOngoing (line 116) | public ONotificationBuilder setOngoing(boolean onGoing) {
method setAutoCancel (line 121) | public ONotificationBuilder setAutoCancel(boolean autoCancel) {
method addAction (line 126) | public ONotificationBuilder addAction(NotificationAction action) {
method allowVibrate (line 131) | public ONotificationBuilder allowVibrate(Boolean vibrate) {
method setColor (line 136) | public ONotificationBuilder setColor(int res_id) {
method setProgress (line 141) | public ONotificationBuilder setProgress(int max, int progress, boolean...
method init (line 148) | private void init() {
method setSoundForNotification (line 187) | private void setSoundForNotification() {
method setVibrateForNotification (line 192) | private void setVibrateForNotification() {
method setResultIntent (line 197) | public ONotificationBuilder setResultIntent(Intent intent) {
method build (line 202) | public ONotificationBuilder build() {
method _addActions (line 218) | private void _addActions() {
method _setResultIntent (line 230) | private void _setResultIntent() {
method show (line 241) | public void show() {
method cancelNotification (line 248) | public static void cancelNotification(Context context, int id) {
class NotificationAction (line 256) | public static class NotificationAction {
method NotificationAction (line 264) | public NotificationAction(int icon, String title, int requestCode,
method getIntent (line 275) | public Class<?> getIntent() {
method setIntent (line 279) | public void setIntent(Class<?> intent) {
method getIcon (line 283) | public int getIcon() {
method setIcon (line 287) | public void setIcon(int icon) {
method getRequestCode (line 291) | public int getRequestCode() {
method setRequestCode (line 295) | public void setRequestCode(int requestCode) {
method getTitle (line 299) | public String getTitle() {
method setTitle (line 303) | public void setTitle(String title) {
method getAction (line 307) | public String getAction() {
method setAction (line 311) | public void setAction(String action) {
method getExtras (line 315) | public Bundle getExtras() {
method setExtras (line 319) | public void setExtras(Bundle extras) {
FILE: app/src/main/java/com/odoo/core/utils/reminder/ReminderActionReceiver.java
class ReminderActionReceiver (line 26) | public class ReminderActionReceiver extends BroadcastReceiver {
method onReceive (line 29) | @Override
FILE: app/src/main/java/com/odoo/core/utils/reminder/ReminderReceiver.java
class ReminderReceiver (line 41) | public class ReminderReceiver extends BroadcastReceiver {
method onReceive (line 51) | @Override
method showNotification (line 57) | private void showNotification(Context context, String type, Bundle dat...
FILE: app/src/main/java/com/odoo/core/utils/reminder/ReminderUtils.java
class ReminderUtils (line 33) | public class ReminderUtils {
method ReminderUtils (line 38) | public ReminderUtils(Context context) {
method get (line 42) | public static ReminderUtils get(Context context) {
method setReminder (line 46) | public boolean setReminder(Date date, Bundle extra) {
method resetReminder (line 59) | public boolean resetReminder(Date date, Bundle extra) {
method cancelReminder (line 66) | public boolean cancelReminder(Date date, Bundle extra) {
FILE: app/src/main/java/com/odoo/core/utils/sys/IOnActivityResultListener.java
type IOnActivityResultListener (line 24) | public interface IOnActivityResultListener {
method onOdooActivityResult (line 25) | public void onOdooActivityResult(int requestCode, int resultCode, Inte...
FILE: app/src/main/java/com/odoo/core/utils/sys/IOnBackPressListener.java
type IOnBackPressListener (line 22) | public interface IOnBackPressListener {
method onBackPressed (line 23) | public boolean onBackPressed();
FILE: app/src/main/java/com/odoo/core/utils/sys/OCacheUtils.java
class OCacheUtils (line 26) | public class OCacheUtils {
method clearSystemCache (line 29) | public static void clearSystemCache(Context context) {
method deleteDir (line 39) | public static boolean deleteDir(File dir) {
FILE: app/src/main/java/com/odoo/datas/OConstants.java
class OConstants (line 22) | public class OConstants {
FILE: app/src/main/java/com/odoo/news/News.java
class News (line 53) | public class News extends BaseFragment implements OCursorListAdapter.
method onCreateView (line 62) | @Override
method drawerMenus (line 68) | @Override
method onViewCreated (line 73) | @Override
method initAdapter (line 81) | private void initAdapter() {
method database (line 90) | @Override
method onViewBind (line 96) | @Override
method onCreateLoader (line 102) | @Override
method onLoadFinished (line 107) | @Override
method onLoaderReset (line 112) | @Override
method onResume (line 117) | @Override
method onPause (line 124) | @Override
method onItemClick (line 130) | @Override
class DataRefreshReceiver (line 138) | class DataRefreshReceiver extends BroadcastReceiver {
method onReceive (line 140) | @Override
FILE: app/src/main/java/com/odoo/news/NewsDetail.java
class NewsDetail (line 40) | public class NewsDetail extends BaseFragment {
method onCreateView (line 44) | @Override
method onViewCreated (line 49) | @Override
method getArgument (line 61) | private void getArgument() {
method drawerMenus (line 66) | @Override
method database (line 71) | @Override
FILE: app/src/main/java/com/odoo/news/OdooNewsReceiver.java
class OdooNewsReceiver (line 32) | public class OdooNewsReceiver extends BroadcastReceiver {
method onReceive (line 35) | @Override
FILE: app/src/main/java/com/odoo/news/models/OdooNews.java
class OdooNews (line 30) | public class OdooNews extends OModel {
method OdooNews (line 37) | public OdooNews(Context context, OUser user) {
FILE: app/src/main/java/com/odoo/server/notifications/OdooServerNotificationReceiver.java
class OdooServerNotificationReceiver (line 31) | public class OdooServerNotificationReceiver extends BroadcastReceiver {
method onReceive (line 34) | @Override
FILE: app/src/main/java/odoo/controls/BezelImageView.java
class BezelImageView (line 43) | public class BezelImageView extends ImageView {
method BezelImageView (line 62) | public BezelImageView(Context context) {
method BezelImageView (line 66) | public BezelImageView(Context context, AttributeSet attrs) {
method BezelImageView (line 70) | public BezelImageView(Context context, AttributeSet attrs, int defStyl...
method autoSetMaskDrawable (line 96) | public void autoSetMaskDrawable() {
method otherInit (line 102) | private void otherInit() {
method setFrame (line 122) | @Override
method onDraw (line 142) | @Override
method drawableStateChanged (line 206) | @Override
method invalidateDrawable (line 220) | @Override
method verifyDrawable (line 229) | @Override
FILE: app/src/main/java/odoo/controls/DateTimePicker.java
class DateTimePicker (line 34) | public class DateTimePicker {
type Type (line 37) | public enum Type {
method DateTimePicker (line 46) | public DateTimePicker() {
method DateTimePicker (line 50) | public DateTimePicker(Context context, Builder builder) {
method show (line 55) | public void show() {
method onTimePick (line 69) | @Override
method onDatePick (line 75) | @Override
class Builder (line 87) | public static class Builder {
method Builder (line 96) | public Builder(Context context) {
method setDate (line 100) | public Builder setDate(String date) {
method setTime (line 105) | public Builder setTime(String time) {
method setDateTime (line 110) | public Builder setDateTime(String dateTime) {
method getDate (line 120) | public Calendar getDate() {
method getTime (line 130) | public Calendar getTime() {
method setType (line 140) | public Builder setType(Type type) {
method getType (line 145) | public Type getType() {
method setCallBack (line 149) | public Builder setCallBack(PickerCallBack callback) {
method getCallBack (line 154) | public PickerCallBack getCallBack() {
method setTitle (line 158) | public Builder setTitle(String title) {
method setTitle (line 163) | public Builder setTitle(int res_id) {
method getDialogTitle (line 168) | public String getDialogTitle() {
method build (line 172) | public DateTimePicker build() {
class DatePicker (line 178) | public class DatePicker implements DatePickerDialog.OnDateSetListener,
method DatePicker (line 185) | public DatePicker(Context context, Calendar date) {
method onCancel (line 194) | @Override
method onDateSet (line 199) | @Override
method setPickerCallback (line 215) | public void setPickerCallback(PickerCallBack callback) {
method show (line 219) | public void show() {
method dismiss (line 223) | public void dismiss() {
class TimePicker (line 228) | public class TimePicker implements TimePickerDialog.OnTimeSetListener,
method TimePicker (line 234) | public TimePicker(Context context, Calendar time) {
method onTimeSet (line 243) | @Override
method onCancel (line 258) | @Override
method setPickerCallback (line 262) | public void setPickerCallback(PickerCallBack callback) {
method show (line 266) | public void show() {
method dismiss (line 270) | public void dismiss() {
type PickerCallBack (line 275) | public interface PickerCallBack {
method onDatePick (line 276) | public void onDatePick(String date);
method onTimePick (line 278) | public void onTimePick(String time);
FILE: app/src/main/java/odoo/controls/ExpandableListControl.java
class ExpandableListControl (line 32) | public class ExpandableListControl extends LinearLayout
method ExpandableListControl (line 38) | public ExpandableListControl(Context context) {
method ExpandableListControl (line 43) | public ExpandableListControl(Context context, AttributeSet attrs) {
method ExpandableListControl (line 48) | public ExpandableListControl(Context context, AttributeSet attrs, int ...
method onAdapterDataChange (line 53) | @Override
method getAdapter (line 62) | public ExpandableListAdapter getAdapter(int resource, List<Object> obj...
class ExpandableListAdapter (line 81) | public abstract static class ExpandableListAdapter {
method ExpandableListAdapter (line 87) | public ExpandableListAdapter(Context context, int resource, List<Obj...
method getView (line 93) | public abstract View getView(int position, View convertView, ViewGro...
method notifyDataSetChanged (line 95) | public void notifyDataSetChanged(List<Object> items) {
method getItem (line 100) | public Object getItem(int position) {
method setOperationListener (line 104) | public void setOperationListener(ExpandableListOperationListener lis...
method getResource (line 108) | public int getResource() {
type ExpandableListAdapterGetViewListener (line 113) | public static interface ExpandableListAdapterGetViewListener {
method getView (line 114) | public View getView(int position, View view, ViewGroup parent);
FILE: app/src/main/java/odoo/controls/ExpandableListOperationListener.java
type ExpandableListOperationListener (line 24) | public interface ExpandableListOperationListener {
method onAdapterDataChange (line 25) | public void onAdapterDataChange(List<Object> items);
FILE: app/src/main/java/odoo/controls/IOControlData.java
type IOControlData (line 26) | public interface IOControlData {
method setValue (line 29) | public void setValue(Object value);
method getValue (line 31) | public Object getValue();
method setEditable (line 33) | public void setEditable(Boolean editable);
method isEditable (line 35) | public Boolean isEditable();
method setLabelText (line 37) | public void setLabelText(String label);
method setColumn (line 39) | public void setColumn(OColumn column);
method initControl (line 41) | public void initControl();
method getLabel (line 43) | public String getLabel();
method setValueUpdateListener (line 45) | public void setValueUpdateListener(ValueUpdateListener listener);
type ValueUpdateListener (line 47) | public static interface ValueUpdateListener {
method onValueUpdate (line 48) | public void onValueUpdate(Object value);
method visibleControl (line 50) | public void visibleControl(boolean isVisible);
method isControlReady (line 53) | public Boolean isControlReady();
method resetData (line 55) | public void resetData();
method getFieldView (line 57) | public View getFieldView();
method setError (line 59) | public void setError(String error);
FILE: app/src/main/java/odoo/controls/IOnChangeCallback.java
type IOnChangeCallback (line 24) | public interface IOnChangeCallback {
method onValueChange (line 27) | public void onValueChange(ODataRow row);
FILE: app/src/main/java/odoo/controls/IOnDomainFilterCallbacks.java
type IOnDomainFilterCallbacks (line 24) | public interface IOnDomainFilterCallbacks {
method onFieldValueChanged (line 27) | public void onFieldValueChanged(OColumn.ColumnDomain domain);
FILE: app/src/main/java/odoo/controls/IOnQuickRecordCreateListener.java
type IOnQuickRecordCreateListener (line 24) | public interface IOnQuickRecordCreateListener {
method onRecordCreated (line 25) | public void onRecordCreated(ODataRow row);
FILE: app/src/main/java/odoo/controls/OBlobField.java
class OBlobField (line 32) | public class OBlobField extends LinearLayout implements IOControlData {
method OBlobField (line 46) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OBlobField (line 53) | public OBlobField(Context context, AttributeSet attrs, int defStyleAtt...
method OBlobField (line 58) | public OBlobField(Context context, AttributeSet attrs) {
method OBlobField (line 63) | public OBlobField(Context context) {
method init (line 68) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method initControl (line 78) | @Override
method setValue (line 98) | @Override
method setError (line 111) | @Override
method getFieldView (line 116) | @Override
method getValue (line 121) | @Override
method setEditable (line 126) | @Override
method isEditable (line 131) | @Override
method setColumn (line 136) | @Override
method setLabelText (line 141) | @Override
method getLabel (line 146) | @Override
method setValueUpdateListener (line 155) | @Override
method isControlReady (line 160) | @Override
method resetData (line 165) | @Override
method onMeasure (line 170) | @Override
method setWidgetType (line 176) | public void setWidgetType(OField.WidgetType type) {
method setImageSize (line 183) | public void setImageSize(float size) {
method setDefaultImage (line 187) | public void setDefaultImage(int image) {
FILE: app/src/main/java/odoo/controls/OBooleanField.java
class OBooleanField (line 38) | public class OBooleanField extends LinearLayout implements IOControlData,
method OBooleanField (line 58) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OBooleanField (line 65) | public OBooleanField(Context context, AttributeSet attrs, int defStyle...
method OBooleanField (line 70) | public OBooleanField(Context context, AttributeSet attrs) {
method OBooleanField (line 75) | public OBooleanField(Context context) {
method init (line 80) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method initControl (line 90) | public void initControl() {
method setValue (line 149) | @Override
method getFieldView (line 181) | @Override
method setError (line 196) | @Override
method getValue (line 202) | @Override
method setEditable (line 207) | @Override
method isEditable (line 213) | @Override
method setWidgetType (line 218) | public void setWidgetType(OField.WidgetType type) {
method setLabelText (line 223) | @Override
method getCheckBoxLabel (line 228) | private String getCheckBoxLabel() {
method getLabel (line 237) | @Override
method setColumn (line 246) | @Override
method setValueUpdateListener (line 253) | @Override
method onCheckedChanged (line 258) | @Override
method onMeasure (line 263) | @Override
method isControlReady (line 269) | @Override
method resetData (line 274) | @Override
method setResource (line 279) | public void setResource(float textSize, int appearance, int color) {
FILE: app/src/main/java/odoo/controls/OControlHelper.java
class OControlHelper (line 24) | public class OControlHelper {
method boldFont (line 27) | public static Typeface boldFont() {
method lightFont (line 31) | public static Typeface lightFont() {
FILE: app/src/main/java/odoo/controls/ODateTimeField.java
class ODateTimeField (line 41) | public class ODateTimeField extends LinearLayout implements IOControlData,
method ODateTimeField (line 62) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method ODateTimeField (line 69) | public ODateTimeField(Context context, AttributeSet attrs, int defStyl...
method ODateTimeField (line 74) | public ODateTimeField(Context context, AttributeSet attrs) {
method ODateTimeField (line 79) | public ODateTimeField(Context context) {
method init (line 84) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method setFieldType (line 94) | public void setFieldType(FieldType type) {
method initControl (line 101) | @Override
method setValue (line 126) | @Override
method getFieldView (line 139) | @Override
method setError (line 145) | @Override
method getValue (line 151) | @Override
method setEditable (line 161) | @Override
method isEditable (line 168) | @Override
method setLabelText (line 173) | @Override
method setColumn (line 178) | @Override
method getLabel (line 183) | @Override
method setValueUpdateListener (line 194) | @Override
method onClick (line 201) | @Override
method getDate (line 222) | private String getDate(String date, String format) {
method onDatePick (line 239) | @Override
method onTimePick (line 247) | @Override
method setParsePattern (line 263) | public void setParsePattern(String parsePattern) {
method onMeasure (line 268) | @Override
method isControlReady (line 274) | @Override
method resetData (line 279) | @Override
method setResource (line 284) | public void setResource(float textSize, int appearance, int color) {
FILE: app/src/main/java/odoo/controls/OEditTextField.java
class OEditTextField (line 36) | public class OEditTextField extends LinearLayout implements IOControlData,
method OEditTextField (line 52) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OEditTextField (line 59) | public OEditTextField(Context context, AttributeSet attrs, int defStyl...
method OEditTextField (line 64) | public OEditTextField(Context context, AttributeSet attrs) {
method OEditTextField (line 69) | public OEditTextField(Context context) {
method init (line 74) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method initControl (line 85) | public void initControl() {
method setWidgetType (line 124) | public void setWidgetType(OField.WidgetType type) {
method setValue (line 129) | @Override
method getFieldView (line 148) | @Override
method setError (line 156) | @Override
method getValue (line 163) | @Override
method setEditable (line 176) | @Override
method isEditable (line 183) | @Override
method setHint (line 188) | public void setHint(String hint) {
method setLabelText (line 192) | @Override
method setColumn (line 197) | @Override
method getLabel (line 202) | @Override
method setValueUpdateListener (line 213) | @Override
method onFocusChange (line 218) | @Override
method onMeasure (line 225) | @Override
method isControlReady (line 231) | @Override
method resetData (line 236) | @Override
method setResource (line 241) | public void setResource(float textSize, int appearance, int color) {
FILE: app/src/main/java/odoo/controls/OField.java
class OField (line 53) | public class OField extends LinearLayout implements IOControlData.ValueU...
type WidgetType (line 87) | public enum WidgetType {
method getWidgetType (line 90) | public static WidgetType getWidgetType(int widget) {
type FieldType (line 113) | public enum FieldType {
method getTypeValue (line 116) | public static FieldType getTypeValue(int type_val) {
method OField (line 141) | public OField(Context context) {
method OField (line 146) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OField (line 153) | public OField(Context context, AttributeSet attrs, int defStyleAttr) {
method OField (line 158) | public OField(Context context, AttributeSet attrs) {
method init (line 163) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method useTemplate (line 204) | public void useTemplate(Boolean withTemplate) {
method initLayout (line 208) | private void initLayout() {
method initControl (line 238) | public void initControl() {
method getFieldView (line 276) | public <T> T getFieldView() {
method setIconTintColor (line 280) | public void setIconTintColor(int color) {
method setImageIcon (line 287) | private void setImageIcon() {
method setColumn (line 297) | public <T> void setColumn(OColumn column) {
method getType (line 308) | private <T> FieldType getType(Class<T> type_class) {
method getLabelText (line 356) | public String getLabelText() {
method setValue (line 366) | public void setValue(Object value) {
method getValue (line 373) | public Object getValue() {
method setEditable (line 379) | public void setEditable(Boolean editable) {
method getEditable (line 390) | public boolean getEditable() {
method getFieldName (line 394) | public String getFieldName() {
method initTextControl (line 399) | private View initTextControl() {
method initBooleanControl (line 411) | private View initBooleanControl() {
method initSelectionWidget (line 423) | private View initSelectionWidget() {
method initDateTimeControl (line 436) | private View initDateTimeControl(FieldType type) {
method initBlobControl (line 448) | private View initBlobControl() {
method getLabelView (line 459) | private TextView getLabelView() {
method setIcon (line 477) | public void setIcon(int resourceId) {
method setError (line 481) | public void setError(String error) {
method getIcon (line 485) | public int getIcon() {
method setModel (line 489) | public void setModel(OModel model) {
method getModel (line 493) | public OModel getModel() {
method getColumn (line 497) | public OColumn getColumn() {
method resetData (line 501) | public void resetData() {
method onValueUpdate (line 505) | @Override
method setOnValueChangeListener (line 536) | public void setOnValueChangeListener(IOnFieldValueChangeListener liste...
method visibleControl (line 540) | @Override
method setOnChangeCallbackListener (line 554) | public void setOnChangeCallbackListener(IOnChangeCallback callback) {
method setOnFilterDomainCallBack (line 564) | public void setOnFilterDomainCallBack(OColumn.ColumnDomain domain,
type IOnFieldValueChangeListener (line 570) | public interface IOnFieldValueChangeListener {
method onFieldValueChange (line 571) | public void onFieldValueChange(OField field, Object value);
FILE: app/src/main/java/odoo/controls/OForm.java
class OForm (line 50) | public class OForm extends LinearLayout {
method OForm (line 65) | public OForm(Context context) {
method OForm (line 70) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OForm (line 77) | public OForm(Context context, AttributeSet attrs, int defStyleAttr) {
method OForm (line 82) | public OForm(Context context, AttributeSet attrs) {
method setEditable (line 87) | public void setEditable(Boolean editable) {
method init (line 99) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method getEditable (line 118) | public boolean getEditable() {
method setModel (line 122) | public void setModel(String model) {
method getModel (line 126) | public String getModel() {
method setData (line 130) | public void setData(ODataRow record) {
method getData (line 134) | public ODataRow getData() {
method initForm (line 138) | public void initForm(ODataRow record) {
method setIconTintColor (line 144) | public void setIconTintColor(int color) {
method initForm (line 148) | private void initForm() {
method loadChatter (line 206) | public void loadChatter(boolean loadChatter) {
method loadChatter (line 210) | public void loadChatter(Boolean loadChatter) {
method findAllFields (line 214) | private void findAllFields(ViewGroup view) {
method getValues (line 230) | public OValues getValues() {
method setOnDomainFilterCallBack (line 257) | private void setOnDomainFilterCallBack(final OColumn column, OField fi...
method setFilterDomainCallback (line 272) | private void setFilterDomainCallback(OColumn.ColumnDomain domain,
method setOnChangeForControl (line 288) | private void setOnChangeForControl(final OColumn column, OField field) {
method fillOnChangeData (line 324) | private void fillOnChangeData(ODataRow values) {
class OnChangeBackground (line 337) | private class OnChangeBackground extends
method OnChangeBackground (line 343) | public OnChangeBackground(OColumn col) {
method onPreExecute (line 347) | @Override
method doInBackground (line 357) | @Override
method onPostExecute (line 368) | @Override
FILE: app/src/main/java/odoo/controls/OSelectionField.java
class OSelectionField (line 55) | public class OSelectionField extends LinearLayout implements IOControlData,
method OSelectionField (line 79) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method OSelectionField (line 86) | public OSelectionField(Context context, AttributeSet attrs, int defSty...
method OSelectionField (line 91) | public OSelectionField(Context context, AttributeSet attrs) {
method OSelectionField (line 96) | public OSelectionField(Context context) {
method init (line 101) | private void init(Context context, AttributeSet attrs, int defStyleAttr,
method createRadioGroup (line 111) | private void createRadioGroup() {
method initControl (line 138) | @Override
method createItems (line 246) | private void createItems() {
method getPos (line 283) | private int getPos() {
method setValue (line 305) | @Override
method getFieldView (line 411) | @Override
method setError (line 417) | @Override
method getValueForM2O (line 423) | private ODataRow getValueForM2O() {
method getValue (line 433) | @Override
method setEditable (line 441) | @Override
method isEditable (line 447) | @Override
method setWidgetType (line 452) | public void setWidgetType(OField.WidgetType type) {
method setArrayResourceId (line 457) | public void setArrayResourceId(int res_id) {
method setColumn (line 461) | public void setColumn(OColumn col) {
method getRecordData (line 468) | private ODataRow getRecordData(int row_id) {
class SpinnerAdapter (line 479) | private class SpinnerAdapter extends ArrayAdapter<ODataRow> {
method SpinnerAdapter (line 481) | public SpinnerAdapter(Context context, int resource,
method getView (line 486) | public View getView(int position, View convertView, ViewGroup parent) {
method getDropDownView (line 490) | @Override
method generateView (line 496) | private View generateView(int position, View convertView,
method onItemSelected (line 508) | @Override
method onNothingSelected (line 522) | @Override
method setLabelText (line 527) | @Override
method getLabel (line 532) | @Override
method createSelectionDialog (line 541) | private AlertDialog createSelectionDialog(final int selected_position,
method onItemClick (line 552) | @Override
method onReceive (line 560) | @Override
method setModel (line 567) | public void setModel(OModel model) {
method getRecordItems (line 571) | public static List<ODataRow> getRecordItems(OModel model, OColumn colu...
method setValueUpdateListener (line 610) | @Override
method onCheckedChanged (line 615) | @Override
method onMeasure (line 622) | @Override
method isControlReady (line 628) | @Override
method resetData (line 633) | @Override
method setResource (line 660) | public void setResource(float textSize, int appearance, int color) {
FILE: app/src/main/java/odoo/controls/SearchableItemActivity.java
class SearchableItemActivity (line 53) | public class SearchableItemActivity extends ActionBarActivity implements
method onCreate (line 72) | @Override
method onItemClick (line 151) | @Override
method onRecordCreated (line 163) | @Override
method beforeTextChanged (line 174) | @Override
method onTextChanged (line 180) | @Override
method afterTextChanged (line 195) | @Override
method onClick (line 200) | @Override
method onSearchChange (line 206) | @Override
class LiveSearch (line 220) | private class LiveSearch extends AsyncTask<String, Void, List<ODataRow...
method onPreExecute (line 222) | @Override
method doInBackground (line 229) | @Override
method onPostExecute (line 250) | @Override
method onCancelled (line 261) | @Override
class QuickCreateRecordProcess (line 269) | private class QuickCreateRecordProcess extends AsyncTask<ODataRow, Voi...
method QuickCreateRecordProcess (line 274) | public QuickCreateRecordProcess(IOnQuickRecordCreateListener listene...
method onPreExecute (line 278) | @Override
method doInBackground (line 288) | @Override
method onPostExecute (line 299) | @Override
FILE: app/src/main/java/odoo/controls/fab/DirectionScrollListener.java
class DirectionScrollListener (line 25) | public class DirectionScrollListener implements AbsListView.OnScrollList...
method DirectionScrollListener (line 33) | DirectionScrollListener(FloatingActionButton floatingActionButton) {
method onScroll (line 37) | @Override
method onScrollStateChanged (line 62) | @Override
FILE: app/src/main/java/odoo/controls/fab/FloatingActionButton.java
class FloatingActionButton (line 43) | public class FloatingActionButton extends View {
method FloatingActionButton (line 60) | public FloatingActionButton(Context context) {
method FloatingActionButton (line 64) | public FloatingActionButton(Context context, AttributeSet attributeSet) {
method FloatingActionButton (line 68) | public FloatingActionButton(Context context, AttributeSet attrs,
method setColor (line 104) | public void setColor(int color) {
method setDrawable (line 110) | public void setDrawable(Drawable drawable) {
method onDraw (line 115) | @Override
method onLayout (line 125) | @Override
method onTouchEvent (line 138) | @Override
method hide (line 151) | public void hide(boolean hide) {
method listenTo (line 166) | public void listenTo(AbsListView listView) {
method darkenColor (line 172) | public static int darkenColor(int color) {
FILE: intro-slider-lib/src/main/java/com/odoo/widget/slider/navigator/PagerNavigatorAdapter.java
class PagerNavigatorAdapter (line 13) | public class PagerNavigatorAdapter {
method PagerNavigatorAdapter (line 18) | public PagerNavigatorAdapter(Context context) {
method navigator (line 23) | public void navigator(int totalCount, View container) {
method pageNavigationDots (line 28) | private void pageNavigationDots(int totalPage) {
method focusOnPagerDot (line 45) | @SuppressLint("NewApi")
method getHeightWidth (line 71) | private int getHeightWidth(boolean focused) {
method getTopBottomMargin (line 80) | private int getTopBottomMargin() {
method getLeftRightMargin (line 85) | private int getLeftRightMargin() {
FILE: intro-slider-lib/src/main/java/com/odoo/widgets/slider/SliderHelper.java
class SliderHelper (line 15) | public class SliderHelper extends ViewPager {
method SliderHelper (line 22) | public SliderHelper(Context context) {
method SliderHelper (line 28) | public SliderHelper(Context context, AttributeSet attrs) {
method _init (line 33) | private void _init(Context context) {
method init (line 38) | public void init(FragmentManager fragmentManager, List<SliderItem> ite...
method onPageSelected (line 52) | @Override
method onPageScrolled (line 57) | @Override
method onPageScrollStateChanged (line 62) | @Override
method initNavigator (line 68) | public void initNavigator(ViewGroup parent) {
class ZoomOutPageTransformer (line 72) | public class ZoomOutPageTransformer implements ViewPager.PageTransform...
method transformPage (line 76) | public void transformPage(View view, float position) {
FILE: intro-slider-lib/src/main/java/com/odoo/widgets/slider/SliderItem.java
class SliderItem (line 7) | public class SliderItem {
method SliderItem (line 15) | public SliderItem(String title, String content, int image,
method putExtra (line 24) | public SliderItem putExtra(String key, Object value) {
method setExtras (line 29) | public SliderItem setExtras(HashMap<String, Object> extras) {
method getExtras (line 34) | public HashMap<String, Object> getExtras() {
method getContent (line 38) | public String getContent() {
method setContent (line 42) | public void setContent(String mContent) {
method getTitle (line 46) | public String getTitle() {
method setTitle (line 50) | public void setTitle(String mTitle) {
method getImagePath (line 54) | public int getImagePath() {
method setImagePath (line 58) | public void setImagePath(int image) {
method setSliderCustomViewListener (line 62) | public void setSliderCustomViewListener(SliderBuilderListener listener) {
method getSliderCustomViewListener (line 66) | public SliderBuilderListener getSliderCustomViewListener() {
FILE: intro-slider-lib/src/main/java/com/odoo/widgets/slider/SliderPagerAdapter.java
class SliderPagerAdapter (line 19) | public class SliderPagerAdapter extends FragmentStatePagerAdapter {
method SliderPagerAdapter (line 25) | public SliderPagerAdapter(Context context, FragmentManager fm) {
method getItem (line 29) | @Override
method initPager (line 39) | public void initPager(Context context, List<SliderItem> items) {
method getCount (line 46) | @Override
class PageFragment (line 51) | class PageFragment extends Fragment {
method onCreateView (line 52) | @Override
method onViewCreated (line 69) | @Override
method getPosition (line 85) | private int getPosition() {
type SliderBuilderListener (line 91) | public interface SliderBuilderListener {
method getCustomView (line 92) | public View getCustomView(Context context, SliderItem item,
FILE: intro-slider-lib/src/main/java/com/odoo/widgets/slider/SliderView.java
class SliderView (line 15) | public class SliderView extends LinearLayout {
method SliderView (line 20) | @SuppressLint("NewApi")
method SliderView (line 27) | @SuppressLint("NewApi")
method SliderView (line 33) | public SliderView(Context context, AttributeSet attrs) {
method SliderView (line 38) | public SliderView(Context context) {
method init (line 43) | private void init(Context context) {
method setItems (line 50) | public void setItems(FragmentManager fragmentManager, List<SliderItem>...
Condensed preview — 345 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,477K chars).
[
{
"path": ".classpath",
"chars": 677,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<classpath>\n\t<classpathentry exported=\"true\" kind=\"con\" path=\"com.android.ide.ecl"
},
{
"path": "README.md",
"chars": 1481,
"preview": "Odoo Mobile Framework v2.0\n==========================\n\n<b>Android Studio Project</b>\n\n<a href=\"https://www.odoo.com/star"
},
{
"path": "app/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "app/build.gradle",
"chars": 995,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n signingConfigs {\n }\n compileSdkVersion 22\n buildToolsVer"
},
{
"path": "app/manifest-merger-release-report.txt",
"chars": 33475,
"preview": "-- Merging decision tree log ---\nmanifest\nADDED from AndroidManifest.xml:2:1\n\txmlns:android\n\t\tADDED from AndroidManifest"
},
{
"path": "app/proguard-rules.pro",
"chars": 656,
"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": 10511,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "app/src/main/java/com/odoo/App.java",
"chars": 3372,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/OdooActivity.java",
"chars": 24889,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/SettingsActivity.java",
"chars": 4370,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/CalendarDashboard.java",
"chars": 39272,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/EventDetail.java",
"chars": 16560,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/models/CalendarEvent.java",
"chars": 6580,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/providers/CalendarSyncProvider.java",
"chars": 5678,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/services/CalendarSyncService.java",
"chars": 3525,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/utils/CalendarUtils.java",
"chars": 2674,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/utils/EventColorDialog.java",
"chars": 5053,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/utils/ReminderDialog.java",
"chars": 9020,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/calendar/utils/TodayIcon.java",
"chars": 3139,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/CRMDetail.java",
"chars": 12630,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/CRMLeads.java",
"chars": 18219,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/CRMOpportunities.java",
"chars": 22174,
"preview": "package com.odoo.addons.crm;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Intent"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/CRMOpportunitiesPager.java",
"chars": 12301,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/ConvertToOpportunityWizard.java",
"chars": 6260,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/ConvertToQuotation.java",
"chars": 3421,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/models/CRMCaseCateg.java",
"chars": 1616,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/models/CRMCaseStage.java",
"chars": 2071,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/models/CRMLead.java",
"chars": 21890,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/providers/CRMLeadProvider.java",
"chars": 1334,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/crm/services/CRMLeadSyncService.java",
"chars": 2781,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/customers/CustomerDetails.java",
"chars": 14414,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/customers/Customers.java",
"chars": 17646,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/customers/providers/CustomersSyncProvider.java",
"chars": 4054,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/customers/services/CustomerSyncService.java",
"chars": 1958,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/customers/utils/ShareUtil.java",
"chars": 3957,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/PhoneCallDetail.java",
"chars": 15804,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/PhoneCalls.java",
"chars": 18107,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/features/CallerWindow.java",
"chars": 5667,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/features/CustomerFinder.java",
"chars": 7145,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/features/IOnCustomerFindListener.java",
"chars": 993,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/features/receivers/PhoneStateReceiver.java",
"chars": 9553,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/models/CRMPhoneCalls.java",
"chars": 7315,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/models/CRMPhoneCallsCategory.java",
"chars": 2360,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/providers/PhoneCallProvider.java",
"chars": 1367,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/phonecall/services/PhoneCallSyncService.java",
"chars": 2480,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/AddProductLineWizard.java",
"chars": 12843,
"preview": "package com.odoo.addons.sale;\n\nimport android.app.ProgressDialog;\nimport android.content.Intent;\nimport android.graphics"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/Sales.java",
"chars": 15158,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/SalesDetail.java",
"chars": 24348,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/models/AccountPaymentTerm.java",
"chars": 1461,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/models/ProductProduct.java",
"chars": 1736,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/models/SaleOrder.java",
"chars": 15269,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/models/SalesOrderLine.java",
"chars": 1847,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/providers/SaleOrderProvider.java",
"chars": 1346,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/addons/sale/services/SaleOrderSyncService.java",
"chars": 3223,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/BaseModels.java",
"chars": 1896,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/ir/IrAttachment.java",
"chars": 4527,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/ir/IrModel.java",
"chars": 2948,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/ir/feature/OFileManager.java",
"chars": 16536,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/ir/providers/IrModelProvider.java",
"chars": 1218,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/MailMessage.java",
"chars": 4822,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/MailMessageSubType.java",
"chars": 1343,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/widget/MailChatterCompose.java",
"chars": 14584,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/widget/MailChatterView.java",
"chars": 12060,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/widget/MailDetailDialog.java",
"chars": 7483,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/mail/widget/MessageObserver.java",
"chars": 1879,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/res/ResCompany.java",
"chars": 2562,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/res/ResCountry.java",
"chars": 1526,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/res/ResCurrency.java",
"chars": 1946,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/res/ResPartner.java",
"chars": 5259,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/base/addons/res/ResUsers.java",
"chars": 1815,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/config/Addons.java",
"chars": 1665,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/config/BaseConfig.java",
"chars": 974,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/config/IntroSliderItems.java",
"chars": 4467,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/About.java",
"chars": 5412,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/AppIntro.java",
"chars": 762,
"preview": "package com.odoo.core.account;\n\nimport android.os.Bundle;\nimport android.support.v7.app.ActionBarActivity;\n\nimport com.o"
},
{
"path": "app/src/main/java/com/odoo/core/account/BaseSettings.java",
"chars": 4146,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/ManageAccounts.java",
"chars": 7968,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/OdooAccountQuickManage.java",
"chars": 7876,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/OdooLogin.java",
"chars": 20869,
"preview": "package com.odoo.core.account;\n\nimport android.app.AlertDialog;\nimport android.content.DialogInterface;\nimport android.c"
},
{
"path": "app/src/main/java/com/odoo/core/account/OdooUserAskPassword.java",
"chars": 4092,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/account/Profile.java",
"chars": 4424,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/auth/OdooAccountManager.java",
"chars": 7061,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/auth/OdooAuthService.java",
"chars": 1379,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/auth/OdooAuthenticator.java",
"chars": 3963,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/ODataRow.java",
"chars": 4253,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OM2MRecord.java",
"chars": 1682,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OM2ORecord.java",
"chars": 1954,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OModel.java",
"chars": 40616,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OModelRegistry.java",
"chars": 1906,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OO2MRecord.java",
"chars": 2217,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OSQLHelper.java",
"chars": 9218,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OSQLite.java",
"chars": 7695,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/OValues.java",
"chars": 3307,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/ServerDataHelper.java",
"chars": 5706,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/annotation/Odoo.java",
"chars": 3066,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/OColumn.java",
"chars": 10806,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OBlob.java",
"chars": 1037,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OBoolean.java",
"chars": 1121,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/ODate.java",
"chars": 1185,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/ODateTime.java",
"chars": 1186,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OFloat.java",
"chars": 1039,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OHtml.java",
"chars": 1036,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OInteger.java",
"chars": 1046,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OSelection.java",
"chars": 1049,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OText.java",
"chars": 1036,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OTimestamp.java",
"chars": 965,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OTypeHelper.java",
"chars": 1696,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/fields/types/OVarchar.java",
"chars": 1121,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/orm/provider/BaseModelProvider.java",
"chars": 11428,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/ISyncFinishListener.java",
"chars": 1026,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/ISyncServiceListener.java",
"chars": 947,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/OSyncAdapter.java",
"chars": 22561,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/OSyncDataUtils.java",
"chars": 19520,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/OSyncService.java",
"chars": 2567,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/service/receivers/ISyncFinishReceiver.java",
"chars": 1041,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OUser.java",
"chars": 13956,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OdooFields.java",
"chars": 1933,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OdooInstancesSelectorDialog.java",
"chars": 6436,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OdooLoginHelper.java",
"chars": 5814,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OdooServerTester.java",
"chars": 2500,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/OdooUserLoginSelectorDialog.java",
"chars": 6891,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/AddonsHelper.java",
"chars": 2090,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/OAddon.java",
"chars": 1457,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/fragment/BaseFragment.java",
"chars": 9524,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/fragment/IBaseFragment.java",
"chars": 1092,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/fragment/IOnSearchViewChangeListener.java",
"chars": 1089,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/addons/fragment/ISyncStatusObserverListener.java",
"chars": 1043,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/drawer/ODrawerItem.java",
"chars": 2556,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/list/IOnItemClickListener.java",
"chars": 1026,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/list/OCursorListAdapter.java",
"chars": 10667,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/list/OListAdapter.java",
"chars": 4734,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/support/sync/SyncUtils.java",
"chars": 3291,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/BitmapUtils.java",
"chars": 5423,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/IntentUtils.java",
"chars": 2871,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/JSONUtils.java",
"chars": 5700,
"preview": "package com.odoo.core.utils;\n\nimport android.text.TextUtils;\n\nimport com.odoo.core.orm.ODataRow;\nimport com.odoo.core.or"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OActionBarUtils.java",
"chars": 1525,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OAlert.java",
"chars": 6463,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OAlertDialog.java",
"chars": 1817,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OControls.java",
"chars": 2494,
"preview": "package com.odoo.core.utils;\n\nimport android.graphics.Bitmap;\nimport android.graphics.Paint;\nimport android.view.View;\ni"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OCursorUtils.java",
"chars": 1992,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/ODateUtils.java",
"chars": 9467,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OFragmentUtils.java",
"chars": 2919,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OListUtils.java",
"chars": 1210,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OPreferenceManager.java",
"chars": 2535,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OResource.java",
"chars": 1281,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OStorageUtils.java",
"chars": 1743,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/OStringColorUtil.java",
"chars": 1697,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/StringUtils.java",
"chars": 2301,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/controls/ExpandableHeightGridView.java",
"chars": 1887,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n * \n * This progr"
},
{
"path": "app/src/main/java/com/odoo/core/utils/dialog/OChoiceDialog.java",
"chars": 2596,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/drawer/DrawerUtils.java",
"chars": 6625,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/drawer/ODrawerScrollView.java",
"chars": 3945,
"preview": "package com.odoo.core.utils.drawer;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nimport andro"
},
{
"path": "app/src/main/java/com/odoo/core/utils/logger/OLog.java",
"chars": 1301,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n * \n * This progr"
},
{
"path": "app/src/main/java/com/odoo/core/utils/notification/ONotificationBuilder.java",
"chars": 10382,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/reminder/ReminderActionReceiver.java",
"chars": 1180,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/reminder/ReminderReceiver.java",
"chars": 8248,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/reminder/ReminderUtils.java",
"chars": 2844,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/sys/IOnActivityResultListener.java",
"chars": 1003,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/sys/IOnBackPressListener.java",
"chars": 919,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/core/utils/sys/OCacheUtils.java",
"chars": 1675,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/datas/OConstants.java",
"chars": 1444,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/news/News.java",
"chars": 4978,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/news/NewsDetail.java",
"chars": 2534,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/news/OdooNewsReceiver.java",
"chars": 1634,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/news/models/OdooNews.java",
"chars": 1466,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/com/odoo/server/notifications/OdooServerNotificationReceiver.java",
"chars": 1771,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/BezelImageView.java",
"chars": 7807,
"preview": "/*\n * Copyright 2014 Google Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "app/src/main/java/odoo/controls/DateTimePicker.java",
"chars": 8624,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/ExpandableListControl.java",
"chars": 4008,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/ExpandableListOperationListener.java",
"chars": 962,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/IOControlData.java",
"chars": 1687,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/IOnChangeCallback.java",
"chars": 1027,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/IOnDomainFilterCallbacks.java",
"chars": 1068,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/IOnQuickRecordCreateListener.java",
"chars": 962,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OBlobField.java",
"chars": 5202,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OBooleanField.java",
"chars": 8850,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OControlHelper.java",
"chars": 1179,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/ODateTimeField.java",
"chars": 9023,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OEditTextField.java",
"chars": 7358,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OField.java",
"chars": 19817,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OForm.java",
"chars": 13313,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/OSelectionField.java",
"chars": 24810,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/SearchableItemActivity.java",
"chars": 11518,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/fab/DirectionScrollListener.java",
"chars": 2388,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/java/odoo/controls/fab/FloatingActionButton.java",
"chars": 6174,
"preview": "/**\n * Odoo, Open Source Management Solution\n * Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)\n *\n * This progra"
},
{
"path": "app/src/main/res/drawable/circle_mask.xml",
"chars": 137,
"preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:shape=\"oval\">\n\n <solid android:color=\"#"
},
{
"path": "app/src/main/res/drawable/circle_mask_gray.xml",
"chars": 140,
"preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:shape=\"oval\">\n\n <solid android:color=\"#"
},
{
"path": "app/src/main/res/drawable/circle_mask_primary.xml",
"chars": 154,
"preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:shape=\"oval\" >\n\n <solid android:color=\""
},
{
"path": "app/src/main/res/drawable/circle_mask_secondary.xml",
"chars": 156,
"preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:shape=\"oval\" >\n\n <solid android:color=\""
},
{
"path": "app/src/main/res/drawable/drawer_background_cover.xml",
"chars": 214,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<bitmap xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:gr"
},
{
"path": "app/src/main/res/drawable/icon_bg_oval_blue.xml",
"chars": 196,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n android:shape=\"oval\"\n xmlns:android=\"http://schemas.android.com/apk"
},
{
"path": "app/src/main/res/drawable/icon_bg_oval_green.xml",
"chars": 197,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n android:shape=\"oval\"\n xmlns:android=\"http://schemas.android.com/apk"
},
{
"path": "app/src/main/res/drawable/icon_bg_oval_orange.xml",
"chars": 198,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n android:shape=\"oval\"\n xmlns:android=\"http://schemas.android.com/apk"
},
{
"path": "app/src/main/res/drawable/icon_bg_oval_red.xml",
"chars": 195,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n android:shape=\"oval\"\n xmlns:android=\"http://schemas.android.com/apk"
},
{
"path": "app/src/main/res/drawable/icon_bg_oval_violet.xml",
"chars": 198,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape\n android:shape=\"oval\"\n xmlns:android=\"http://schemas.android.com/apk"
},
{
"path": "app/src/main/res/drawable/login_signup_button.xml",
"chars": 420,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <item "
},
{
"path": "app/src/main/res/drawable/login_signup_button_clicked.xml",
"chars": 294,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n <it"
},
{
"path": "app/src/main/res/drawable/login_signup_button_normal.xml",
"chars": 294,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n <it"
},
{
"path": "app/src/main/res/drawable/login_signup_control_bg.xml",
"chars": 299,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n <!-"
},
{
"path": "app/src/main/res/drawable/tag_background.xml",
"chars": 262,
"preview": "<shape xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:shape=\"rectangle\">\n <gradient\n a"
}
]
// ... and 145 more files (download for full content)
About this extraction
This page contains the full source code of the Odoo-mobile/crm GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 345 files (1.3 MB), approximately 309.2k tokens, and a symbol index with 1993 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.