Rapid Native App Development using Modern C++ with Tizen Fundamental Classes (TFC)

Original Created Jun 04, 2017 | Regeneration Apr 22, 2026

The Tizen Native API primarily uses procedural-style C programming, which can create barriers for developers accustomed to higher-level languages. While EFL (Elementary Foundation Libraries) is powerful, it introduces boilerplate code that slows development.

Tizen Fundamental Classes (TFC) is a C++ library that:

  • Encapsulates EFL boilerplate code
  • Implements Model-View-Controller framework
  • Provides DSL for asynchronous programming
  • Offers object bridging between C++ and EFL

SRIN has successfully used TFC in multiple production apps including Salaam, Detikcom, Kompas, CNN Indonesia, and Samsung Gift Indonesia. The library is now open source and being used to develop Telegram for Tizen.

Resources:

  • Slides: [PDF Link]
  • TFC Library: [GitHub Link]

Problem Understanding

Developers face challenges when:

  1. Transitioning from higher-level languages to Tizen's C-based API
  2. Managing EFL boilerplate code
  3. Implementing common patterns like MVC in native Tizen apps

Solution Methods

  1. TFC Architecture

    • Acts as a C++ wrapper for EFL (but not comprehensive)
    • Focuses on bridging EFL with modern C++ patterns
    • Provides infrastructure for callback dispatching
  2. UI Customization

    • Uses TFC::Components::ComponentBase for custom components
    • Follows factory pattern for widget creation
    • Enables reusability through structured patterns
  3. Platform Support

    • Works with Tizen 2.4 and 3.0 SDKs
    • Can be adapted for wearable (with some API limitations)
    • Development branch recommended for latest features

Code Examples

For custom components:

class CustomComponent : public TFC::Components::ComponentBase {
public:
    CustomComponent() {
        // Initialize component
    }
    
    void CreateView() override {
        // Create EFL widgets here
    }
};

Additional Tips

  • For wearable development, be prepared to handle missing eext_floatingbutton APIs
  • Check the development branch for latest updates
  • Review sample apps for implementation patterns
  • Contribution to the open-source project is encouraged

Customize your cookie preferences

You can enable or disable non-essential cookies. Essential cookies are always on to ensure the site works properly and to keep you signed in.

Necessary

These cookies are necessary for the website to function properly and cannot be switched off. They help with things like logging in and setting your privacy preferences.

Always on

Analytics

These cookies help us improve the site by tracking which pages are most popular and how visitors move around the site.

Enable analytics cookies
Public Forum Public Forum
Employees only. Please sign in with your company account.