aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/helpers/higher-order-components
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/helpers/higher-order-components')
-rw-r--r--ui/app/helpers/higher-order-components/authenticated/authenticated.component.js22
-rw-r--r--ui/app/helpers/higher-order-components/authenticated/authenticated.container.js12
-rw-r--r--ui/app/helpers/higher-order-components/authenticated/index.js1
-rw-r--r--ui/app/helpers/higher-order-components/i18n-provider.js55
-rw-r--r--ui/app/helpers/higher-order-components/initialized/index.js1
-rw-r--r--ui/app/helpers/higher-order-components/initialized/initialized.component.js14
-rw-r--r--ui/app/helpers/higher-order-components/initialized/initialized.container.js12
-rw-r--r--ui/app/helpers/higher-order-components/metametrics/metametrics.provider.js106
-rw-r--r--ui/app/helpers/higher-order-components/with-method-data/index.js1
-rw-r--r--ui/app/helpers/higher-order-components/with-method-data/with-method-data.component.js65
-rw-r--r--ui/app/helpers/higher-order-components/with-modal-props/index.js1
-rw-r--r--ui/app/helpers/higher-order-components/with-modal-props/tests/with-modal-props.test.js43
-rw-r--r--ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js21
-rw-r--r--ui/app/helpers/higher-order-components/with-token-tracker/index.js1
-rw-r--r--ui/app/helpers/higher-order-components/with-token-tracker/with-token-tracker.component.js106
15 files changed, 461 insertions, 0 deletions
diff --git a/ui/app/helpers/higher-order-components/authenticated/authenticated.component.js b/ui/app/helpers/higher-order-components/authenticated/authenticated.component.js
new file mode 100644
index 000000000..c195d0e21
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/authenticated/authenticated.component.js
@@ -0,0 +1,22 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import { Redirect, Route } from 'react-router-dom'
+import { UNLOCK_ROUTE, INITIALIZE_ROUTE } from '../../constants/routes'
+
+export default function Authenticated (props) {
+ const { isUnlocked, completedOnboarding } = props
+
+ switch (true) {
+ case isUnlocked && completedOnboarding:
+ return <Route { ...props } />
+ case !completedOnboarding:
+ return <Redirect to={{ pathname: INITIALIZE_ROUTE }} />
+ default:
+ return <Redirect to={{ pathname: UNLOCK_ROUTE }} />
+ }
+}
+
+Authenticated.propTypes = {
+ isUnlocked: PropTypes.bool,
+ completedOnboarding: PropTypes.bool,
+}
diff --git a/ui/app/helpers/higher-order-components/authenticated/authenticated.container.js b/ui/app/helpers/higher-order-components/authenticated/authenticated.container.js
new file mode 100644
index 000000000..6124b0fcd
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/authenticated/authenticated.container.js
@@ -0,0 +1,12 @@
+import { connect } from 'react-redux'
+import Authenticated from './authenticated.component'
+
+const mapStateToProps = state => {
+ const { metamask: { isUnlocked, completedOnboarding } } = state
+ return {
+ isUnlocked,
+ completedOnboarding,
+ }
+}
+
+export default connect(mapStateToProps)(Authenticated)
diff --git a/ui/app/helpers/higher-order-components/authenticated/index.js b/ui/app/helpers/higher-order-components/authenticated/index.js
new file mode 100644
index 000000000..05632ed21
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/authenticated/index.js
@@ -0,0 +1 @@
+export { default } from './authenticated.container'
diff --git a/ui/app/helpers/higher-order-components/i18n-provider.js b/ui/app/helpers/higher-order-components/i18n-provider.js
new file mode 100644
index 000000000..0e34e17e0
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/i18n-provider.js
@@ -0,0 +1,55 @@
+const { Component } = require('react')
+const connect = require('react-redux').connect
+const PropTypes = require('prop-types')
+const { withRouter } = require('react-router-dom')
+const { compose } = require('recompose')
+const t = require('../utils/i18n-helper').getMessage
+
+class I18nProvider extends Component {
+ tOrDefault = (key, defaultValue, ...args) => {
+ const { localeMessages: { current, en } = {} } = this.props
+ return t(current, key, ...args) || t(en, key, ...args) || defaultValue
+ }
+
+ getChildContext () {
+ const { localeMessages } = this.props
+ const { current, en } = localeMessages
+ return {
+ t (key, ...args) {
+ return t(current, key, ...args) || t(en, key, ...args) || `[${key}]`
+ },
+ tOrDefault: this.tOrDefault,
+ tOrKey (key, ...args) {
+ return this.tOrDefault(key, key, ...args)
+ },
+ }
+ }
+
+ render () {
+ return this.props.children
+ }
+}
+
+I18nProvider.propTypes = {
+ localeMessages: PropTypes.object,
+ children: PropTypes.object,
+}
+
+I18nProvider.childContextTypes = {
+ t: PropTypes.func,
+ tOrDefault: PropTypes.func,
+ tOrKey: PropTypes.func,
+}
+
+const mapStateToProps = state => {
+ const { localeMessages } = state
+ return {
+ localeMessages,
+ }
+}
+
+module.exports = compose(
+ withRouter,
+ connect(mapStateToProps)
+)(I18nProvider)
+
diff --git a/ui/app/helpers/higher-order-components/initialized/index.js b/ui/app/helpers/higher-order-components/initialized/index.js
new file mode 100644
index 000000000..863fcb389
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/initialized/index.js
@@ -0,0 +1 @@
+export { default } from './initialized.container.js'
diff --git a/ui/app/helpers/higher-order-components/initialized/initialized.component.js b/ui/app/helpers/higher-order-components/initialized/initialized.component.js
new file mode 100644
index 000000000..2042c0046
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/initialized/initialized.component.js
@@ -0,0 +1,14 @@
+import React from 'react'
+import PropTypes from 'prop-types'
+import { Redirect, Route } from 'react-router-dom'
+import { INITIALIZE_ROUTE } from '../../constants/routes'
+
+export default function Initialized (props) {
+ return props.completedOnboarding
+ ? <Route { ...props } />
+ : <Redirect to={{ pathname: INITIALIZE_ROUTE }} />
+}
+
+Initialized.propTypes = {
+ completedOnboarding: PropTypes.bool,
+}
diff --git a/ui/app/helpers/higher-order-components/initialized/initialized.container.js b/ui/app/helpers/higher-order-components/initialized/initialized.container.js
new file mode 100644
index 000000000..0e7f72bcb
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/initialized/initialized.container.js
@@ -0,0 +1,12 @@
+import { connect } from 'react-redux'
+import Initialized from './initialized.component'
+
+const mapStateToProps = state => {
+ const { metamask: { completedOnboarding } } = state
+
+ return {
+ completedOnboarding,
+ }
+}
+
+export default connect(mapStateToProps)(Initialized)
diff --git a/ui/app/helpers/higher-order-components/metametrics/metametrics.provider.js b/ui/app/helpers/higher-order-components/metametrics/metametrics.provider.js
new file mode 100644
index 000000000..6086e03fb
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/metametrics/metametrics.provider.js
@@ -0,0 +1,106 @@
+import { Component } from 'react'
+import { connect } from 'react-redux'
+import PropTypes from 'prop-types'
+import { withRouter } from 'react-router-dom'
+import { compose } from 'recompose'
+import {
+ getCurrentNetworkId,
+ getSelectedAsset,
+ getAccountType,
+ getNumberOfAccounts,
+ getNumberOfTokens,
+} from '../../../selectors/selectors'
+import {
+ txDataSelector,
+} from '../../../selectors/confirm-transaction'
+import { getEnvironmentType } from '../../../../../app/scripts/lib/util'
+import {
+ sendMetaMetricsEvent,
+ sendCountIsTrackable,
+} from '../../utils/metametrics.util'
+
+class MetaMetricsProvider extends Component {
+ static propTypes = {
+ network: PropTypes.string.isRequired,
+ environmentType: PropTypes.string.isRequired,
+ activeCurrency: PropTypes.string.isRequired,
+ accountType: PropTypes.string.isRequired,
+ metaMetricsSendCount: PropTypes.number.isRequired,
+ children: PropTypes.object.isRequired,
+ history: PropTypes.object.isRequired,
+ }
+
+ static childContextTypes = {
+ metricsEvent: PropTypes.func,
+ }
+
+ constructor (props) {
+ super(props)
+
+ this.state = {
+ previousPath: '',
+ currentPath: window.location.href,
+ }
+
+ props.history.listen(locationObj => {
+ this.setState({
+ previousPath: this.state.currentPath,
+ currentPath: window.location.href,
+ })
+ })
+ }
+
+ getChildContext () {
+ const props = this.props
+ const { pathname } = location
+ const { previousPath, currentPath } = this.state
+
+ return {
+ metricsEvent: (config = {}, overrides = {}) => {
+ const { eventOpts = {} } = config
+ const { name = '' } = eventOpts
+ const { pathname: overRidePathName = '' } = overrides
+ const isSendFlow = Boolean(name.match(/^send|^confirm/) || overRidePathName.match(/send|confirm/))
+
+ if (props.participateInMetaMetrics || config.isOptIn) {
+ return sendMetaMetricsEvent({
+ ...props,
+ ...config,
+ previousPath,
+ currentPath,
+ pathname,
+ excludeMetaMetricsId: isSendFlow && !sendCountIsTrackable(props.metaMetricsSendCount + 1),
+ ...overrides,
+ })
+ }
+ },
+ }
+ }
+
+ render () {
+ return this.props.children
+ }
+}
+
+const mapStateToProps = state => {
+ const txData = txDataSelector(state) || {}
+
+ return {
+ network: getCurrentNetworkId(state),
+ environmentType: getEnvironmentType(),
+ activeCurrency: getSelectedAsset(state),
+ accountType: getAccountType(state),
+ confirmTransactionOrigin: txData.origin,
+ metaMetricsId: state.metamask.metaMetricsId,
+ participateInMetaMetrics: state.metamask.participateInMetaMetrics,
+ metaMetricsSendCount: state.metamask.metaMetricsSendCount,
+ numberOfTokens: getNumberOfTokens(state),
+ numberOfAccounts: getNumberOfAccounts(state),
+ }
+}
+
+module.exports = compose(
+ withRouter,
+ connect(mapStateToProps)
+)(MetaMetricsProvider)
+
diff --git a/ui/app/helpers/higher-order-components/with-method-data/index.js b/ui/app/helpers/higher-order-components/with-method-data/index.js
new file mode 100644
index 000000000..f511e1ae7
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-method-data/index.js
@@ -0,0 +1 @@
+export { default } from './with-method-data.component'
diff --git a/ui/app/helpers/higher-order-components/with-method-data/with-method-data.component.js b/ui/app/helpers/higher-order-components/with-method-data/with-method-data.component.js
new file mode 100644
index 000000000..efa9ad0a2
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-method-data/with-method-data.component.js
@@ -0,0 +1,65 @@
+import React, { PureComponent } from 'react'
+import PropTypes from 'prop-types'
+import { getMethodData, getFourBytePrefix } from '../../utils/transactions.util'
+
+export default function withMethodData (WrappedComponent) {
+ return class MethodDataWrappedComponent extends PureComponent {
+ static propTypes = {
+ transaction: PropTypes.object,
+ knownMethodData: PropTypes.object,
+ addKnownMethodData: PropTypes.func,
+ }
+
+ static defaultProps = {
+ transaction: {},
+ knownMethodData: {},
+ }
+
+ state = {
+ methodData: {},
+ done: false,
+ error: null,
+ }
+
+ componentDidMount () {
+ this.fetchMethodData()
+ }
+
+ async fetchMethodData () {
+ const { transaction, knownMethodData, addKnownMethodData } = this.props
+ const { txParams: { data = '' } = {} } = transaction
+
+ if (data) {
+ try {
+ let methodData
+ const fourBytePrefix = getFourBytePrefix(data)
+ if (fourBytePrefix in knownMethodData) {
+ methodData = knownMethodData[fourBytePrefix]
+ } else {
+ methodData = await getMethodData(data)
+ if (!Object.entries(methodData).length === 0) {
+ addKnownMethodData(fourBytePrefix, methodData)
+ }
+ }
+
+ this.setState({ methodData, done: true })
+ } catch (error) {
+ this.setState({ done: true, error })
+ }
+ } else {
+ this.setState({ done: true })
+ }
+ }
+
+ render () {
+ const { methodData, done, error } = this.state
+
+ return (
+ <WrappedComponent
+ { ...this.props }
+ methodData={{ data: methodData, done, error }}
+ />
+ )
+ }
+ }
+}
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/index.js b/ui/app/helpers/higher-order-components/with-modal-props/index.js
new file mode 100644
index 000000000..e476b51d2
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-modal-props/index.js
@@ -0,0 +1 @@
+export { default } from './with-modal-props'
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/tests/with-modal-props.test.js b/ui/app/helpers/higher-order-components/with-modal-props/tests/with-modal-props.test.js
new file mode 100644
index 000000000..654e7062a
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-modal-props/tests/with-modal-props.test.js
@@ -0,0 +1,43 @@
+
+import assert from 'assert'
+import configureMockStore from 'redux-mock-store'
+import { mount } from 'enzyme'
+import React from 'react'
+import withModalProps from '../with-modal-props'
+
+const mockState = {
+ appState: {
+ modal: {
+ modalState: {
+ props: {
+ prop1: 'prop1',
+ prop2: 2,
+ prop3: true,
+ },
+ },
+ },
+ },
+}
+
+describe('withModalProps', () => {
+ it('should return a component wrapped with modal state props', () => {
+ const TestComponent = props => (
+ <div className="test">Testing</div>
+ )
+ const WrappedComponent = withModalProps(TestComponent)
+ const store = configureMockStore()(mockState)
+ const wrapper = mount(
+ <WrappedComponent store={store} />
+ )
+
+ assert.ok(wrapper)
+ const testComponent = wrapper.find(TestComponent).at(0)
+ assert.equal(testComponent.length, 1)
+ assert.equal(testComponent.find('.test').text(), 'Testing')
+ const testComponentProps = testComponent.props()
+ assert.equal(testComponentProps.prop1, 'prop1')
+ assert.equal(testComponentProps.prop2, 2)
+ assert.equal(testComponentProps.prop3, true)
+ assert.equal(typeof testComponentProps.hideModal, 'function')
+ })
+})
diff --git a/ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js b/ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js
new file mode 100644
index 000000000..aac6b5a61
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-modal-props/with-modal-props.js
@@ -0,0 +1,21 @@
+import { connect } from 'react-redux'
+import { hideModal } from '../../../store/actions'
+
+const mapStateToProps = state => {
+ const { appState } = state
+ const { props: modalProps } = appState.modal.modalState
+
+ return {
+ ...modalProps,
+ }
+}
+
+const mapDispatchToProps = dispatch => {
+ return {
+ hideModal: () => dispatch(hideModal()),
+ }
+}
+
+export default function withModalProps (Component) {
+ return connect(mapStateToProps, mapDispatchToProps)(Component)
+}
diff --git a/ui/app/helpers/higher-order-components/with-token-tracker/index.js b/ui/app/helpers/higher-order-components/with-token-tracker/index.js
new file mode 100644
index 000000000..d401e81f1
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-token-tracker/index.js
@@ -0,0 +1 @@
+export { default } from './with-token-tracker.component'
diff --git a/ui/app/helpers/higher-order-components/with-token-tracker/with-token-tracker.component.js b/ui/app/helpers/higher-order-components/with-token-tracker/with-token-tracker.component.js
new file mode 100644
index 000000000..36f6a6efd
--- /dev/null
+++ b/ui/app/helpers/higher-order-components/with-token-tracker/with-token-tracker.component.js
@@ -0,0 +1,106 @@
+import React, { Component } from 'react'
+import PropTypes from 'prop-types'
+import TokenTracker from 'eth-token-tracker'
+
+export default function withTokenTracker (WrappedComponent) {
+ return class TokenTrackerWrappedComponent extends Component {
+ static propTypes = {
+ userAddress: PropTypes.string.isRequired,
+ token: PropTypes.object.isRequired,
+ }
+
+ constructor (props) {
+ super(props)
+
+ this.state = {
+ string: '',
+ symbol: '',
+ error: null,
+ }
+
+ this.tracker = null
+ this.updateBalance = this.updateBalance.bind(this)
+ this.setError = this.setError.bind(this)
+ }
+
+ componentDidMount () {
+ this.createFreshTokenTracker()
+ }
+
+ componentDidUpdate (prevProps) {
+ const { userAddress: newAddress, token: { address: newTokenAddress } } = this.props
+ const { userAddress: oldAddress, token: { address: oldTokenAddress } } = prevProps
+
+ if ((oldAddress === newAddress) && (oldTokenAddress === newTokenAddress)) {
+ return
+ }
+
+ if ((!oldAddress || !newAddress) && (!oldTokenAddress || !newTokenAddress)) {
+ return
+ }
+
+ this.createFreshTokenTracker()
+ }
+
+ componentWillUnmount () {
+ this.removeListeners()
+ }
+
+ createFreshTokenTracker () {
+ this.removeListeners()
+
+ if (!global.ethereumProvider) {
+ return
+ }
+
+ const { userAddress, token } = this.props
+
+ this.tracker = new TokenTracker({
+ userAddress,
+ provider: global.ethereumProvider,
+ tokens: [token],
+ pollingInterval: 8000,
+ })
+
+ this.tracker.on('update', this.updateBalance)
+ this.tracker.on('error', this.setError)
+
+ this.tracker.updateBalances()
+ .then(() => this.updateBalance(this.tracker.serialize()))
+ .catch(error => this.setState({ error: error.message }))
+ }
+
+ setError (error) {
+ this.setState({ error })
+ }
+
+ updateBalance (tokens = []) {
+ if (!this.tracker.running) {
+ return
+ }
+ const [{ string, symbol }] = tokens
+ this.setState({ string, symbol, error: null })
+ }
+
+ removeListeners () {
+ if (this.tracker) {
+ this.tracker.stop()
+ this.tracker.removeListener('update', this.updateBalance)
+ this.tracker.removeListener('error', this.setError)
+ }
+ }
+
+ render () {
+ const { string, symbol, error } = this.state
+
+ return (
+ <WrappedComponent
+ { ...this.props }
+ string={string}
+ symbol={symbol}
+ error={error}
+ />
+ )
+ }
+ }
+}
Make the addressbook use the new 16x16 icons in the menus.Ettore Perazzoli2001-01-252-0/+9 * Get the addressbook to use the new "Show all" icon.Ettore Perazzoli2001-01-252-0/+35 * esexp api change fixes.Not Zed2001-01-253-11/+19 * make sure to add the lengths here (include the \0? anyone?).Chris Toshok2001-01-252-2/+12 * (Fix #1225: advanced search cancel/close)Jason Leach2001-01-242-32/+48 * properly ref the ecard. still need to kill some memory leaks.JP Rosevear2001-01-232-0/+6 * remove vfs dependencyJP Rosevear2001-01-233-11/+15 * Remove deleted records from the pilot map so we don't have dupes in theJP Rosevear2001-01-232-1/+7 * Updated sl translationsAndraz Tori2001-01-221-0/+2 * Update for e_popup_menu_run prototype change.Dan Winship2001-01-203-2/+8 * (Adding a boolean "entry_changed" BonoboPropertyBag arg)Jason Leach2001-01-192-1/+34 * always free the delivery elements and correct embarrassingly stupid memoryJP Rosevear2001-01-193-16/+29 * Made it return a gboolean; it was completely ignoring the return valueFederico Mena Quintero2001-01-193-5/+11 * add evolution-gnomecard-importer.Larry Ewing2001-01-182-0/+3 * add the doc/devel/importer/Makefile as a target.Larry Ewing2001-01-182-2/+10 * Forgot...Iain Holmes2001-01-181-1/+2 * Support the new interfacesIain Holmes2001-01-183-26/+16 * s/Helix Code/Ximian/ for the initial contact card.Jason Leach2001-01-172-5/+10 * Moved ESearchBar from filter/ to widgets/misc/, a more appropriate home.Jacob Leach2001-01-171-1/+1 * '2001-01-15 JP Rosevear <jpr@ximian.com>JP Rosevear2001-01-162-8/+20 * changed the signature of the property_bag get/set functionsDietmar Maurer2001-01-153-0/+6 * remove old config messageJP Rosevear2001-01-151-2/+3 * pass -module and -avoid-version to conduit linkerJP Rosevear2001-01-142-0/+6 * Add an ::asyncCopyFolder method to the ShellComponent interface. MoveEttore Perazzoli2001-01-132-1/+6 * added i18n for etable.Miguel de Icaza2001-01-122-0/+37 * Fix make distIain Holmes2001-01-121-0/+3 * Try againIain Holmes2001-01-121-1/+1 * get a book view from somewhere so we can give status messages - choose theChris Toshok2001-01-122-23/+100 * GnomeCard importerIain Holmes2001-01-124-1/+293 * More Makefile organization to compileMiguel de Icaza2001-01-102-12/+15 * Order LDADD flags correctly so it compiles.Miguel de Icaza2001-01-102-4/+8 * connect with the EAddressbookView's status_message signal.Chris Toshok2001-01-104-2/+106 * register our status_message signal. (status_message): new function, emitChris Toshok2001-01-109-81/+277 * if we're setting the full name regenerate ecard->name.Chris Toshok2001-01-102-0/+8 * new function. (impl_BookListener_respond_authentication_result): newChris Toshok2001-01-0514-9/+313 * Added this function.Christopher James Lahey2001-01-057-21/+259 * Remove non-existent fileJP Rosevear2001-01-0514-1478/+24 * Oops, this shouldn't have gone in yetJP Rosevear2001-01-052-0/+4 * Need to e_sexp_unref the the sexp, not gtk_object_unref it.JP Rosevear2001-01-056-5/+8 * check capabilities is valid before doing a strstr.Michael Meeks2001-01-042-5/+10 * g_strdup things we g_free.Michael Meeks2001-01-032-1/+6 * Make sure this won't crash if the given contact is removed from theChristopher James Lahey2001-01-034-33/+134 * copy the dialog's source, destroy the dialog after we're done, and makeChris Toshok2000-12-317-171/+67 * new function, calling our new config ui code. (control_activate): noChris Toshok2000-12-3012-882/+1186 * add addressbook-config.[ch].Chris Toshok2000-12-294-0/+595 * Set draw background to FALSE.Miguel de Icaza2000-12-255-11/+14 * Added Ms. and Miss to the prefix drop down box. Patch submitted by MartinChristopher James Lahey2000-12-235-0/+14 * Ref the cards that get put in the change list (next_changed_item): utilJP Rosevear2000-12-223-64/+144 * Check for null strings (e_pilot_utf8_from_pchar): dittoJP Rosevear2000-12-212-3/+8 * Use my own wrapper functions instead of trying to *directly* access theJP Rosevear2000-12-212-3/+17 * Remove pointless commentJP Rosevear2000-12-202-40/+71 * Convert cal component strings to pilot character setJP Rosevear2000-12-202-18/+17 * Made it so that if you select multiple contacts, the right click menu toChristopher James Lahey2000-12-202-9/+59 * always use LDAP_NAME_ERROR (in the openldap1 case it's #defined toChris Toshok2000-12-192-19/+62 * Test for the existance of LDAP_NAME_ERROR and if it exists as a macro, useChristopher James Lahey2000-12-142-0/+10 * update cut and paste description error.Michael Meeks2000-12-143-3/+8 * NUL-terminate the returned vcard so we don't sometimes end up withDan Winship2000-12-142-6/+12 * Make the -> in the select names dialog into a GNOME stock arrow pixmap.Iain Holmes2000-12-132-4/+15 * Connect to the "cursor_change" signal on the ETable here instead of theChristopher James Lahey2000-12-102-3/+13 * When setting the "name" argument, copy the incoming name. This fixes aChristopher James Lahey2000-12-102-1/+6 * Made editing the name using the full name button set the file as entryChristopher James Lahey2000-12-103-38/+43 * Made it so that the editor->name is set after the entry is changed. ThisChristopher James Lahey2000-12-093-4/+12 * Complete the code to associate a URI and a folder type to the toplevelEttore Perazzoli2000-12-092-1/+7 * Fixed some formatting.Christopher James Lahey2000-12-095-10/+16 * Pass "" rather than NULL to e_card_new. (local_record_from_ecard): MakeJP Rosevear2000-12-082-13/+23 * Got rid of code referencing the ETableScrolled proxy functions.Christopher James Lahey2000-12-082-2/+9 * Moved the gal view menu stuff from here to EAddressbookView.Christopher James Lahey2000-12-074-9/+51 * Another conduit build fixJP Rosevear2000-12-062-0/+5 * Create an empty vcard with the appropriate id for deleted cardsJP Rosevear2000-12-053-38/+33 * Update the calls to `evolution_storage_new()' according to the newEttore Perazzoli2000-12-052-1/+7 * return NULL if we can't create a view.Michael Meeks2000-12-0515-159/+36 * ugh, it helps when you save the ChangeLog before commiting it :)Jeffrey Stedfast2000-12-011-1/+1 * removed #ifdef ENABLE_NLS/#endif on Miguel's request.Gediminas Paulauskas2000-11-301-2/+0 * Return a struct rather than a pointer to a struct (compare):JP Rosevear2000-11-292-37/+26 * Remove "complete" fieldJP Rosevear2000-11-285-75/+111 * Set view.change_context to NULL in pas_backend_file_process_get_book_view.Christopher James Lahey2000-11-233-4/+15 * Fixed typo preventing compilation - NAME_ERROR should be LDAP_NAME_ERROR (I t...Ross Golder2000-11-231-1/+1 * Add widgets/menus/libmenus.la to evolution_addressbook_LDADD so that itMatt Bissiri2000-11-192-1/+9 * Added widgets/menus that contains the gal-view-menus.c code from Gal thatMiguel de Icaza2000-11-181-1/+1 * Initialize destination struct with '0's.JP Rosevear2000-11-162-1/+6 * #!/usr/bin/perl -pi.bakMichael Meeks2000-11-166-12/+12 * Changed the mime type from "text/vcard" to "text/x-vcard".Christopher James Lahey2000-11-132-1/+6 * Clear the rdate and exrule lists from the component if we are setting aFederico Mena Quintero2000-11-138-102/+58 * Add idl-generated files.Matt Bissiri2000-11-124-17/+28 * Link in composer bonobo code.Christopher James Lahey2000-11-129-55/+303 * Update the remaining "IDL:Evolution*" to "IDL:GNOME/Evolution*" to sync upMatt Bissiri2000-11-117-6/+13 * A very, long, very tedious IDL API rename and re-scoping;Michael Meeks2000-11-1129-361/+367 * Require gal 0.2.99.1.Christopher James Lahey2000-11-104-8/+36 * Add changed_hash, change list and complete boolJP Rosevear2000-11-108-93/+335 * Build e-dbhash.[hc]JP Rosevear2000-11-085-65/+141 * Switched from EAddressbookSearch to ESearchBar.Christopher James Lahey2000-11-076-445/+66 * Fix the addressbook crash that happened when the ESelectNames controlEttore Perazzoli2000-11-072-1/+7 * Add menus items to the envelope printing stuff.Christopher James Lahey2000-11-0611-10/+432 * Block signals from the toggle button. (date_changed_cb): MergedFederico Mena Quintero2000-11-052-0/+8 * Updated Spanish translationHector Garcia2000-11-031-0/+2 * Removed these unnecessary .cvsignores.Christopher James Lahey2000-11-038-71/+403 * The big api rename ...Michael Meeks2000-11-025-9/+9 * Add "highlighted" flag to evolution_storage_new_folderDan Winship2000-11-022-2/+10 * modified or added a bunch of .cvsignore to ignore generated files, whichGediminas Paulauskas2000-11-013-0/+8 * Let the warning make sense (compute_pid): removeJP Rosevear2000-11-018-215/+365 * Mark two strings correctlyKjartan Maraas2000-10-311-2/+2 * Fixed marking of strings for translation. Use "_(" instead of "_ (". AddKjartan Maraas2000-10-314-36/+49 * Fixed these to include EXTRA_GNOME_CFLAGS.Christopher James Lahey2000-10-285-3/+15 * unsigned charness.Michael Meeks2000-10-272-4/+10 * i2000-10-25 Chris Toshok <toshok@helixcode.com>Chris Toshok2000-10-262-16/+62 * AM_GNOME_GETTEXT doesn't use $(datadir)/locale as the locale dir. (ItDan Winship2000-10-245-5/+13 * Use new libeconduit calls and abstractionJP Rosevear2000-10-243-27/+16 * Use e_pilot_map_read (post_sync): Use e_pilot_map_writeJP Rosevear2000-10-243-126/+23 * 2000-10-20 Michael Meeks <michael@helixcode.com>Michael Meeks2000-10-214-13/+19 * New structure of file - similar to calendar/todo conduitsJP Rosevear2000-10-218-1100/+1002 * Build fixJP Rosevear2000-10-203-0/+144 * Remove Family name column since it's a bit weird. This also fixes theChristopher James Lahey2000-10-202-1/+6 * Build fixes from Jacob, same as the other branch.Ettore Perazzoli2000-10-203-5/+18 * Change how the extension field acts when converting delivery addresses toChristopher James Lahey2000-10-192-3/+8 * Added the function e_card_delivery_address_to_label.Christopher James Lahey2000-10-197-20/+51 * update to new UI handler. (update_view_type): split fromMichael Meeks2000-10-19