forked from enlightenment/efl
45 lines
1.9 KiB
Plaintext
45 lines
1.9 KiB
Plaintext
class @beta Efl.Ui.Caching_Factory extends Efl.Ui.Widget_Factory
|
|
{
|
|
[[Efl Ui Factory that provides object caching.
|
|
|
|
This factory handles caching of one type of object that must be an @Efl.Gfx.Entity with an @Efl.Ui.View interface defined.
|
|
This factory will rely on its parent class @Efl.Ui.Widget_Factory for creating the subset of class that match @Efl.Ui.Widget
|
|
interface.
|
|
The factory will automatically empties the cache when the application goes into pause.
|
|
|
|
Creating objects is costly and time consuming, keeping a few on hand for when you next will need them helps a lot.
|
|
This is what this factory caching infrastructure provides. It will create the object from the class defined on it and
|
|
set the parent and the model as needed for all created items. The View has to release the Item using the
|
|
release function of the Factory interface for all of this to work properly.
|
|
|
|
The cache might decide to flush itself when the application event pause is triggered.
|
|
]]
|
|
methods {
|
|
@property memory_limit {
|
|
[[Define the maxium size in Bytes that all the object waiting on standby in the cache take. They must provide the @Efl.Cached.Item interface for an accurate accounting.]]
|
|
get {}
|
|
set {}
|
|
values {
|
|
limit: uint; [[When set to zero, there is no limit on the amount of memory the cache will use.]]
|
|
}
|
|
}
|
|
@property items_limit {
|
|
[[Define how many maximum number of items are waiting on standby in the cache.]]
|
|
get {}
|
|
set {}
|
|
values {
|
|
limit: uint; [[When set to zero, there is no limit to the amount of items stored in the cache.]]
|
|
}
|
|
}
|
|
}
|
|
|
|
implements {
|
|
Efl.Ui.Factory.create;
|
|
Efl.Ui.Factory.release;
|
|
Efl.Ui.Property_Bind.property_bind;
|
|
Efl.Ui.Widget_Factory.item_class { get; set; }
|
|
Efl.Object.invalidate;
|
|
Efl.Object.parent { set; }
|
|
}
|
|
}
|