ãã®æçš¿ã¯ãã
Smart Posts for Smart Posts ããšããã³ã³ãã¹ãã«åå ããŠããŸãã
Nokia N9ã¯ãå€ãã®ç¹ã§åªããããã€ã¹ã§ãã ããããç®±ããåºããŠããã«ã¯ãéåžžã«éèŠãªæ©èœã¯ãããŸããã æºåž¯é»è©±ã®ããŒã ç»é¢ãäžç®èŠãã ãã§ã¯ãå
ã®ã«ã¬ã³ããŒã§ã©ããªã€ãã³ããåŸ
ã£ãŠããã®ããç解ããããšã¯äžå¯èœã§ãã ãã®åä»ãªåé¡ã解決ããããã«ãç§ã¯Calendar Feedã¢ããªã±ãŒã·ã§ã³ïŒ
OVI Store ã
source ïŒãéçºããŸããã ã«ããã®äžã§ãã¢ããªã±ãŒã·ã§ã³èªäœïŒå°ãïŒãšãããã©ã®ããã«äœæããããïŒæçš¿ã®å€§éšåïŒã«ã€ããŠè©³ãã説æããŸãã
泚æãããã¹ãããããããããŸãã æºåãã§ããã...
ã«ã¬ã³ããŒãã£ãŒãã¢ããªã±ãŒã·ã§ã³ã ããã¯OSã«å®å
šã«çµ±åãããŠããããŠãŒã¶ãŒã§ã¯ãªãOSãä»ããŠå床åŒã³åºãããŸãïŒãã ãããŠãŒã¶ãŒã¯[æŽæ°]ãã¿ã³ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããŒã¿ã®æŽæ°ãæ¥ãããšãã§ããŸãïŒã èšå®ã¯ã·ã¹ãã ã«å®å
šã«çµ±åããããã®äžéšã®ããã«èŠããŸãã åäœäžãã¢ããªã±ãŒã·ã§ã³ã¯å®æçã«ïŒ20åããšïŒãå€ãã«ã¬ã³ããŒãåé€ããªãããã«ã¬ã³ããŒããæãè¿ãã€ãã³ããæã€èŠçŽ ããã£ãŒãïŒãã·ã¢èªçã§ã¯ãã£ã³ãã«ïŒã«ã¢ããããŒãããŸãã ãã®èŠçŽ ã¯åžžã«äžçªäžã«ãããŸãïŒãã®æå»ã¯çŸåšã®ãã©ã¹1æ¥ãšããŠèšå®ãããŸãïŒã ã¢ããªã±ãŒã·ã§ã³ã«ã¯ããã€ãã®èšå®ããããŸããïŒãŸã éåžžã«è¥ããå°ãã ãå®è¡ã§ããŸãïŒãåºæ¬çãªæ©èœã®ãã¹ãŠã®æ©èœã«ã¯ååã§ãã èŠçŽ å
ã®ã€ãã³ãã®æ°ãèšå®ããŠãä»æ¥ã®ã€ãã³ããå°æ¥ïŒä»æ¥ãããŸããªãå ŽåïŒã«è¿œå ãããããªãããå°æ¥ã®ã€ãã³ãã®æ¥æ°ã«å¶éïŒåæã®å¯èœæ§ãããå ŽåïŒãèšå®ã§ããŸãïŒç¿å¹ŽãŸãã¯æã®ã€ãã³ãã衚瀺ããªãããã«ïŒã
ã¹ã¯ãªãŒã³ã·ã§ãã ããŠãããã¯ãã¹ãŠæè©ã§ããããã®ã¢ããªã±ãŒã·ã§ã³ã®å®éã®éçºã»ã©èå³æ·±ããã®ã§ã¯ãããŸããã æçµçã«ãHabrã¯æè¡ãªãœãŒã¹ã§ãã ããã§ã¯ãããããã¹ãŠãã©ã®ããã«è©³çŽ°ã«éçºãããããç解ããŸãããã
次ã®ãã€ã³ãããœãŒããããŸãã
å
責äºé
ïŒHarmattanã®ããã¥ã¡ã³ãã¯éåžžã«å°ãªããå®å
šã«èŒãããã§ã¯ãªããããããã«æžãããŠããå
容ã®å€§éšåã¯ããã€ããªãå
¥åããŠæãããšã«ãã£ãŠææ¡ããå¿
èŠããããŸããã ãããããããã€ãã®ãã¹ã¯æé©ã§ã¯ãããŸããã ãã®èšäºã§èª¬æãããŠããããšãè¡ãç°¡åãªæ¹æ³ãç¥ã£ãŠããå Žåã¯ãã³ã¡ã³ãã«æžããŠãã ããã
ã€ãã³ãã衚瀺ãã
ã¢ããªã±ãŒã·ã§ã³ã®æãéèŠã§åºæ¬çãªæ©èœã¯ããã£ãŒãã«èŠçŽ ãè¿œå ããããšã§ãã 2ã€ã®æ¹æ³ããããŸãïŒ
æåŸã®ãªãã·ã§ã³ã«ã€ããŠã¯æ€èšããŸããããæåã®2ã€ã«ã€ããŠã¯æ€èšããŸãã
ã¯ã©ã¹MEventFeed
ãã®ãªãã·ã§ã³ã¯ãHarmattanã®ããã¥ã¡ã³ãã§ææ¡ãããŠããŸãã 圌ã¯aã®ããã«åçŽã§ãã 2ã€ã®ã¡ãœãããæã€MEventFeedã¯ã©ã¹ããããŸãïŒãªã³ã©ã€ã³ããã¥ã¡ã³ãã«ãããš3ã€ã®ã¡ãœããããããŸããã3çªç®ã®
ã¡ãœããã¯QtSDKã¿ãŒã²ããã§ã¯äœ¿çšã§ããŸããïŒïŒ
addItemããã³
removeItemsBySourceName ã æåã®ã¡ãœããã¯ãã£ãŒãã«èŠçŽ ãè¿œå ãã2çªç®ã®ã¡ãœããã¯åããœãŒã¹ãæã€ãã¹ãŠã®èŠçŽ ãåé€ããŸãã
qlonglong addItem(const QString &icon,
ãããåããŠèŠããšããç§ã®é¡ã¯äŒžã³ãŠããŸããã ã²ãã¿ãŒãšã»ãã¿ãŒã§å°ããªã¯ã©ã¹ãäœæããŠæž¡ãããšã¯æ¬åœã«äžå¯èœã§ããïŒ ããŠãããããŸãããäžãããããã®ãç§ãã¡ã¯ããã§åããŠããŸãã ã³ã¡ã³ãã¯ãåãã©ã¡ãŒã¿ãŒã®æå³ã瀺ããŠããŸãã ãã®ã¡ãœããã¯ãèŠçŽ ã®IDãŸãã¯-1ãè¿ããŸãïŒäœãåé¡ãçºçããå Žåãã»ãšãã©ã®å Žåããããã¯èª€ã£ãŠæå®ããããã©ã¡ãŒã¿ãŒã§ãïŒã
void removeItemsBySourceName(const QString &sourceName);
ããŠãããã§ã¯ãã¹ãŠãç°¡åã§ãã åã®ã¡ãœããã§æå®ãããåãIDãæž¡ãããã®IDãæã€ãã¹ãŠã®èŠçŽ ãåé€ãããŸãã
ãã®ãã¹ã¯åçŽã§äŸ¿å©ã§ãããå¯èœæ§ãå¶éãããŠããŸãã å®éã«ã¯ãURLãããã²ãŒãããããšã«å ããŠãdbusã¡ãœãããåŒã³åºãããšãã§ããŸãã ãã ãããã®ã¯ã©ã¹ã®å©ããåããŠãåŒã³åºãããã¡ãœããã®ã·ã°ããã£ãæå®ããããšã¯ã§ããŸããããããã£ãŠãããæ®éçãªãã£ãŒãã®æäœæ¹æ³ïŒdbusçµç±ïŒãæ€èšããŸãã
DBus
QDBusMessage message = QDBusMessage::createMethodCall( "com.nokia.home.EventFeed", "/eventfeed", "com.nokia.home.EventFeed", "addItem"); QList<QVariant> args; QVariantMap itemArgs; itemArgs.insert("title", "Calendar"); itemArgs.insert("icon", icon); itemArgs.insert("body", body); itemArgs.insert("timestamp", QDateTime::currentDateTime().addDays(1).toString("yyyy-MM-dd hh:mm:ss")); itemArgs.insert("sourceName", "SyncFW-calendarfeed"); itemArgs.insert("sourceDisplayName", "Calendar Feed"); itemArgs.insert("action", action); QDBusConnection bus = QDBusConnection::sessionBus(); args.append(itemArgs); message.setArguments(args); bus.callWithCallback(message, this, SLOT(dbusRequestCompleted(QDBusMessage)));
ããã«ã¯ããã«ã³ãŒãããããŸãããã¢ã¯ã·ã§ã³ããããã£ãèšå®ããæ©èœããããŸãïŒdbusã¡ãœããã®ã·ã°ããã£ãæ ŒçŽããŸãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãïŒã MEventFeedã«ãã£ããã¹ãŠã®ãã©ã¡ãŒã¿ãŒãaddItemããã³plus actionãèšå®ã§ããŸãã èŠããŠããã¹ãå¯äžã®ããšã¯ãã¿ã€ã ã¹ã¿ã³ãã®è»¢éã§ãã
"-- ::".
ã®åœ¢åŒã§1è¡ã§éä¿¡ãã
"-- ::".
ã¢ã€ã³ã³ãžã®ãã¹ã®ä»£ããã«ã¢ã€ã³ã³ã䜿çšããŠãã¢ã€ã³ã³ã䜿çšã§ããŸãïŒã«ã¬ã³ããŒãã£ãŒãã䜿çšãããã®ã§ã
ãIDicon-l-calendar-12ã®ã¢ã€ã³ã³ã䜿çšãããŸã ã12ã®ä»£ããã«ãªã¹ãã®æåã®ã€ãã³ãã®çªå·ã眮ãæããããŸãïŒã
ãŸããDBusã䜿çšãããšãIDïŒMEventFeedã§ã¯äœ¿çšã§ããŸããïŒã§ã¢ã€ãã ãåé€ããã³æŽæ°ã§ããŸãã
Harmattan DBus眲åã¹ãã¬ãŒãžæ©èœ
ç§ã¯ãã®ããºã«ãæ°æ©å€æ¹ã«è§£æ±ºããªããã°ãªããŸããã§ããããæçµçã«ïŒ
hexdump ã
stringsãªã©ãããã³ãã®ãããªæ¯èŠªã䜿çšããŠïŒã¡ãœããã·ã°ããã£ãæž¡ããŠæ£ããåŒã³åºãããããã«ããæ¹æ³ãç解ããããšãã§ããŸããã
次ã®çœ²åããããŸãã
com.nokia.Calendar / com.nokia.maemo.meegotouch.CalendarInterface.showMonthView 2011 11 25ããã€ã¹ã§ãããã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠãã®ã¡ââãœãããåŒã³åºããšã2011幎11æ25æ¥ã«éžæãããæ¥ä»ã®æ衚瀺ã§ã«ã¬ã³ããŒãéããŸãã
ãã®ã¡ãœãããåŒã³åºãã«
ã¯ãèŠçŽ ã®
ã¢ã¯ã·ã§ã³ã«æ¬¡ã®è¡ãè¿œå ããå¿
èŠ
ããããŸãã
com.nokia.Calendar / com.nokia.maemo.meegotouch.CalendarInterface showMonthView AAAAAgAAAAfb AAAAAgAAAAAL AAAAAgAAAAAZããŠãã€ã³ã¿ãŒãã§ã€ã¹ãšã¡ãœããåã®éã«ã¯ã¹ããŒã¹ãããããã¹ãŠãæ確ã§ãã
QDBusMessageã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯
ã 2ã€ã®ç°ãªããã©ã¡ãŒã¿ãŒã«ãåå²ãããŸãã ãããã3ã€ã®æ°åã®ä»£ããã«3ã€ã®å¥åŠãªæåååŒæ°ãšã¯äœã§ããïŒ ããªããç¥ã£ãŠãããšãããã¹ãŠãéåžžã«ç°¡åã§ããheheïŒå€æ¹ã«2ã€ãŸãã¯3ã€ã殺ãããã€ããªãšdbusã¡ãœããã§æãè¿ããŸããïŒã ããã¯ã
QDataStreamã«ã·ãªã¢ã«åããã
QVariantãªããžã§ã¯ãã®Base64ã§ãã
ãã®ãããªè¡ãçæããããã®ãã«ããŒã¡ãœããïŒ
QString CalendarFeedPlugin::base64SerializedVariant(const QVariant &value) const { QByteArray ba; QDataStream stream(&ba, QIODevice::WriteOnly); stream << value; return ba.toBase64(); }
dbusã¡ãœããã®ã·ã°ããã£ãæ ŒçŽãããŠããHarmattanã®ããããå Žæã§ããã®ãããªè¡šèšæ³ã䜿çšãããŠããããšãçãããŸãã
Syncfw
ãã£ãŒãèŠçŽ ãäœæããæ¹æ³ãåŠã³ãŸããã ããã§ãäœããã®æ¹æ³ã§å®æçã«è¿œå ããå¿
èŠããããŸãã ããããªãŒãé£ã¹ãæªéãå²ã蟌ãã®ã§ã¯ãªããå¯èœãªéãã·ã¹ãã ã«çµ±åããŠããã€æŽæ°ãããã決å®ããããšããå§ãããŸãã
ãã®ç®çã®ããã«ãHarmattanã«ã¯ãã©ã°ã€ã³ãäœæã§ãã
SyncFWãã¬ãŒã ã¯ãŒã¯ããããŸãã ãã®ãã©ã°ã€ã³ã¯ãæå®ããããã©ã¡ãŒã¿ãŒã«åŸã£ãŠããŒãªã³ã°ãããŸãã ãã©ã°ã€ã³ã¯ãã¡ã¿ããŒã¿ãšå
±æã©ã€ãã©ãªã®2ã€ã®éšåã«è«ççã«åå²ãããŠããŸãã
éèŠãªç¹ïŒ PR1.0ã§ã¯ãæ°ãããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããåŸã«ããã€ã¹ãåèµ·åããå¿
èŠããããŸãã PR1.1ã§ã¯ããã®åé¡ãåé¿ã§ããŸãïŒã€ã³ã¹ããŒã«ã¹ã¯ãªããã®ã»ã¯ã·ã§ã³ãåç
§ïŒã ãã ãããã©ã°ã€ã³ã®æŽæ°ã«ã¯åžžã«åèµ·åãå¿
èŠã§ãã ããããªããšãå€ãã¡ã¿ããŒã¿ãæ°ããã¡ã¿ããŒã¿ãšå
±ã«äœ¿çšãããã ãã§ãïŒåèµ·åããã«ã¢ã³ããŒãã§ããŸããããã®æ¹æ³ã¯ããããŸããïŒã
ãã1ã€ã®éèŠãªãã€ã³ãïŒäŸã§calendarfeedåã䜿çšãããŠããå Žåã¯åžžã«ããã©ã°ã€ã³åãå¿
èŠã§ããããšãç解ãããŠããŸãïŒãã®å Žåãã©ã€ãã©ãªã¯lib <plugin_name> -client.soãã€ãŸãããã®å Žåã¯libcalendarfeed-client.soãšåŒã°ããŸãïŒã ãã©ã°ã€ã³ã®ååã«ãã€ãã³ããã£ãŠã¯ãªããŸããã çæ³çã«ã¯-ã©ãã³æåã®ã¿ãæ°åã®äœ¿çšãèš±å¯ããããšæããŸãïŒãã§ãã¯ããŸããã§ããïŒã
ã¡ã¿ããŒã¿
ãã©ã°ã€ã³ã説æããã«ã¯ã次ã®ãã¡ã€ã«ãå¿
èŠã§ãã
- /etc/sync/profiles/client/calendarfeed.xml
- /etc/sync/profiles/service/calendarfeed.xml
- /etc/sync/profiles/sync/calendarfeed.xml
/etc/sync/profiles/client/calendarfeed.xml <?xml version="1.0" encoding="UTF-8"?> <profile name="calendarfeed" type="client" > </profile>
ã¯ã©ã€ã¢ã³ãåŽã®ãããã¡ã€ã«ãäœæããã ãã§ãïŒå
±æã©ã€ãã©ãªãã¯ã©ã€ã¢ã³ããšããŠæ©èœããŸãïŒ
/etc/sync/profiles/service/calendarfeed.xml <?xml version="1.0" encoding="UTF-8"?> <profile name="calendarfeed" type="service"> <key name="destinationtype" value="offline"/> <profile name="calendarfeed" type="client" > </profile> </profile>
ãµãŒãã¹ãããã¡ã€ã«ãäœæãããªãã©ã€ã³ã§åäœã§ããããšã瀺ããŸãã ã€ãŸãããã©ã°ã€ã³ã¯æ£åžžã«æ©èœããããã«ã€ã³ã¿ãŒãããæ¥ç¶ãå¿
èŠãšããŸããïŒHarmattanã®ããã¥ã¡ã³ãã§ã¯ããã¯äžå¯èœã§ãããšèšèŒãããŠããŸãããå®éã«ã¯æ©èœããŠããŸãïŒã 顧客ãããã¡ã€ã«ã瀺ãããŸãã
/etc/sync/profiles/sync/calendarfeed.xml <?xml version="1.0" encoding="UTF-8"?> <profile name="calendarfeed" type="sync" > <key name="displayname" value="Calendar Feed"/> <key name="enabled" value="true" /> <key name="use_accounts" value="false" /> <key name="hidden" value="true" /> <profile type="service" name="calendarfeed" > </profile> <schedule enabled="true" interval="20" days="1,2,3,4,5,6,7" syncconfiguredtime="" time=""> </schedule> </profile>
åæãããã¡ã€ã«ãäœæããŸãã
ãããã¡ã€ã«ããŒãã®ã³ã³ãã³ãïŒ
- displayname-UIã«è¡šç€ºãããåå
- æå¹-ãããã¡ã€ã«ãã¢ã¯ãã£ããã©ãã
- use_accounts-ã¢ã«ãŠã³ããã¬ãŒã ã¯ãŒã¯ã䜿çšãããã©ãã
- é衚瀺-ãã®ãããã¡ã€ã«ã¯UIã«é衚瀺ã§ã
- ãããã¡ã€ã«-ãµãŒãã¹ãããã¡ã€ã«
ããã§æãéèŠãªéšåã¯ããã¡ããã¹ã±ãžã¥ãŒã«ã§ãã ãã®ããŒãããã®æ
å ±ã«åŸã£ãŠããã©ã°ã€ã³ãããŒãªã³ã°ãããŸãã ãã®å Žåãææ¥ã«é¢ä¿ãªã20åããšã«è³ªåãããŸãã
ããããé±æ«ãšå¹³æ¥ã®å€æ¹ã«ã¯30åããšã«ãå¹³æ¥ã¯15åããšã«1å質åããå¿
èŠãããå Žåã¯ã©ãããã°ããã§ããããïŒ 30åã§æããã§ãã 20ãã30ã«å€æŽãããšããã¹ãŠåé¡ãããŸããã è¿œå ã®ã¹ã±ãžã¥ãŒã«æéãèšå®ããã«ã¯ã
ã©ãã·ã¥ããŒãã
ã¹ã±ãžã¥ãŒã«ãµãããŒããšããŠæå¹ã«ããå¿
èŠããããŸãã
<rush begin="00:00:00" enabled="true" interval="15" end="17:00:00" days="1,2,3,4,5"/>
å
±æã©ã€ãã©ãª
ã©ã€ãã©ãªã«ã¯ããã©ã°ã€ã³ãäœæããã³åé€ããããã«ã1ã€ã®
Buteo :: ClientPluginäžäœã¯ã©ã¹ãš2ã€ã®externé¢æ°ãå¿
èŠã§ãã
class CalendarFeedPlugin : public Buteo::ClientPlugin { Q_OBJECT public: CalendarFeedPlugin( const QString &pluginName, const Buteo::SyncProfile &profile, Buteo::PluginCbInterface *cbInterface ); virtual ~CalendarFeedPlugin(); virtual bool init(); virtual bool uninit(); virtual bool startSync(); virtual void abortSync(Sync::SyncStatus status = Sync::SYNC_ABORTED); virtual Buteo::SyncResults getSyncResults() const; virtual bool cleanUp(); public slots: virtual void connectivityStateChanged( Sync::ConnectivityType type, bool state ); protected slots: void syncSuccess(); void syncFailed(); void updateFeed(); void dbusRequestCompleted(const QDBusMessage &reply); void dbusErrorOccured(const QDBusError &error, const QDBusMessage &message); private: void updateResults(const Buteo::SyncResults &results); QString base64SerializedVariant(const QVariant &value) const; Buteo::SyncResults m_results; }; extern "C" CalendarFeedPlugin* createPlugin( const QString& pluginName, const Buteo::SyncProfile &profile, Buteo::PluginCbInterface *cbInterface ); extern "C" void destroyPlugin( CalendarFeedPlugin *client );
ãã®ããããŒã«ã¯ãæäœéå¿
èŠãªã¯ã©ã¹ã«è¿ãã¯ã©ã¹ãå«ãŸããŸãïŒ
ä¿è·ãããã¹ããããš
ãã©ã€ããŒãã»ã¯ã·ã§ã³ãåé€ãããå Žåãæå°ã¯ã©ã¹ã«ãªããŸãïŒã ãã以å€ã¯ãã¹ãŠä»®æ³ã¡ãœããã®ãªãŒããŒã©ã€ãã§ãïŒã»ãšãã©ã®å ŽåãçŽç²ä»®æ³ïŒã
ä»®æ³bool initïŒïŒ;ããã¯æåã«åŒã³åºããããã©ã°ã€ã³ãããèªäœãåæåã§ãããã©ããã確èªããããã«å¿
èŠã§ãã æåããå Žåãtrueãè¿ããããã»ã¹ã¯ããã«é²ã¿ãŸãã
ä»®æ³ããŒã«uninitïŒïŒ;ãã©ã°ã€ã³ãã¢ã³ããŒããããåã«åŒã³åºãããéåžžã¯ããã§ã¯ãªãŒãã³ã°ãè¡ãããŸãã
ä»®æ³ããŒã«startSyncïŒïŒ;ãã®ã¡ãœããã¯ãæŽæ°ãéå§ã§ãããã©ããã確èªããæŽæ°ãéå§ããå¿
èŠããããŸãïŒéåæã§ïŒã æŽæ°ã®éå§ã«æåããçµæãè¿ããŸãã
virtual void abortSyncïŒSync :: SyncStatus status = Sync :: SYNC_ABORTEDïŒ;ãŠãŒã¶ãŒãæŽæ°ããã£ã³ã»ã«ãããšãã«åŒã³åºãããŸãã ã¢ã«ãŠã³ãïŒãã®ãããªãã¿ã³ãããå ŽåïŒãæäœããå¿
èŠããããŸãããã®å ŽåããŠãŒã¶ãŒã¯æŽæ°ããã£ã³ã»ã«ããæ©äŒããããŸããã
virtual Buteo :: SyncResults getSyncResultsïŒïŒconst;æåŸã®æŽæ°ã®çµæãè¿ããŸãã
ä»®æ³ããŒã«ã®ã¯ãªãŒã³ã¢ããïŒïŒ;ã¢ã«ãŠã³ããåé€ããããšãã«åŒã³åºãããŸãã ãã®å Žåããããã¯å¿
èŠãããŸããïŒãã ããããã¥ã¡ã³ãã§ã¯ãåŸã§äœ¿çšã§ããå¯èœæ§ããããšæžãããŠããŸãïŒã
virtual void connectivityStateChangedïŒSync :: ConnectivityType typeãbool stateïŒ;æ¥ç¶ã¹ããŒã¿ã¹ãå€æŽãããå Žåã«åŒã³åºãããŸãã ãã©ã°ã€ã³ããããã¯ãŒã¯ã§åäœããªãå Žåããã®ã¹ãããã空ã«ãªããŸãã
æãèå³æ·±ãã¡ãœããã¯startSyncïŒïŒã§ããããšãããããŸãã ãããŠåœç¶ã§ãã ãã®äžã§ãã¿ã€ããŒã«ïŒã€ãŸããéåæã§ïŒèŠçŽ ãFeedã«è¿œå ããã¡ãœãããå®è¡ããŸãã ä»ã®ãã¹ãŠã®æ¹æ³ã¯ã»ãšãã©ãå®çšçã§ãã
SyncFWãã©ã°ã€ã³ã®ããŒã«ã©ã€ãº
åœç¶ããã®å°ããªã©ã€ãã©ãªã¯ããŒã«ã©ã€ãºã«ã€ããŠäœãç¥ããŸããã ãã®ãããç®çã®å Žæã§æåã§çªãå¿
èŠããããŸãïŒèšèªãèªåçã«éžæããŸããäž»ãªããšã¯ãç®çã®.qmãã¡ã€ã«ã®ã»ãããæå®ããããšã§ãïŒã
MLocale locale; locale.installTrCatalog("calendarfeed");
æŽæ°ãã¿ã³ã®æŽæ°
ã€ã³ã¿ãŒããããªãã§æŽæ°ããå Žåãšåæ§ã«ãããã¥ã¡ã³ãã§ã¯ãæŽæ°ãã¿ã³ã¯åã蟌ã¿ã¢ããªã±ãŒã·ã§ã³ã®ã¿ãæŽæ°ã§ããããšã瀺ãããŠããŸãïŒèªã¿åãïŒTwitterãFacebookãRSSãã£ãŒããAPã¢ãã€ã«ïŒã ããããç§ãã¡ã¯ç¬èªã®æ¹æ³ã§é²ãã§ããã®ã§ããã®ã¹ããŒãã¡ã³ããèªåã§æ€èšŒããããšããŸãã
FeedããŒã¿ããŒã¹ïŒ
/home/user/.config/meegotouchhome-nokia/eventsfeed.dataãã¡ã€ã«ã«ãããéåžžã®SqliteããŒã¿ããŒã¹ïŒã«ã¯ãã€ãã³ããç»åãrefreshactionsã®3ã€ã®ããŒãã«ããããŸãã ãã®å Žåãæåã®2ã€ã¯ã»ãšãã©é¢å¿ããããŸãããã3çªç®ã¯éåžžã«èå³æ·±ããã®ã§ãã 圌女ã«ã¯å±æ§
ã¢ã¯ã·ã§ã³ã 1ã€ãããããŸããã FeedèŠçŽ ãè¿œå ããããšã§ååããã§ã«ããç¥ãããŠããã®ã§ãããã§dbusã¡ãœããåŒã³åºãã®ã·ã°ããã£ãïŒäžèšã®åœ¢åŒã§ïŒé
眮ããããšããŸãã ãããŠããã¯åäœããŸãïŒ ããã¥ã¡ã³ãã¯åã³ééã£ãŠããŸããã ããŠã倧äžå€«ã§ãããä»ã§ã¯å¿
èŠãªæ©èœãå®è£
ã§ããŸãã ã·ã¹ãã ãžã®æ倧éã®çµ±åã®éããã©ã£ãŠããŸãããã¢ããªã±ãŒã·ã§ã³ããã®ãã¿ã³ã«å¿çããªãå Žåã¯éåžžã«å¥åŠã§ãã
ããŠããã¿ã³ã«ãã€ã³ãããæ¹æ³ã決å®ããŸãããããã©ã°ã€ã³ãã¹ã±ãžã¥ãŒã«å€ã§åŒã³åºãæ¹æ³ã¯ïŒ ãããè¡ãã«ã¯ã1ã€ã®åŒæ°ïŒã¯ã©ã€ã¢ã³ããããã¡ã€ã«ã®ååïŒãæã€dbusã¡ãœãã
com.meego.msyncd / synchronizer com.meego.msyncd.startSyncããããŸãã
现ããéšåãæ®ã£ãŠããŸã...ã¢ã¯ã·ã§ã³ããã®ããŒãã«ã«è¿œå ããæ¹æ³ã¯ïŒ å®éãSQLã¯ãšãªã§ã¯ãããŸããã 幞ããªããšã«ãdbusã®addItemã®é£ã«ã¯
addRefreshActionã¡ãœãããããã眲åä»ãã®è¡ãæž¡ãããšãã§ããŸãã
å°ãåŸã«ã
ããaddRefreshActionãåŒã³åºãå ŽæãèŠã€ããŸãã ãããŸã§ã®éãã¢ããªã±ãŒã·ã§ã³èªäœãç¶è¡ããŸãã
ã«ã¹ã¿ãã€ãºçšã¢ãã¬ãã
ã¢ããªã±ãŒã·ã§ã³ã®èšå®ãå¿
èŠã§ãã è«ççãªè³ªåã¯ãããããã©ãã«çœ®ããïŒ å¥ã®ã¢ããªã±ãŒã·ã§ã³ã«ããŠãä»ã®ã¢ããªã±ãŒã·ã§ã³ã®é£ã«é
眮ããŸããïŒ ãããããªãã·ã§ã³ã§ã¯ãããŸããã ã©ã³ãã£ãŒã«ã¯ããããå€ãããŸãã éåžžã«ãŸãã«ãã䜿çšãããªãå¥ã®æŽæ°ããã°ã©ã ïŒæŽæ°ããšã«çŽ1åïŒã¯ãæããã«äžèŠã§ãã ãã®å Žåãã¢ãã¬ãããèšå®éå±€ã«è¿œå ããæ©äŒã圹ç«ã¡ãŸãã ãŸããç»é¢ã«äœåãªã¢ã€ã³ã³ã¯ãããŸããããã£ãŒãã§TwitterãšFacebookã®è¡šç€ºãæå¹/ç¡å¹ã«ãã暪ã«åŒã³åºããã¿ã³ãè¿œå ã§ããŸãã
ã¢ãã¬ããäœæ
MeeGo Harmattanã¯ãèšå®ã§æå¹ã«ã§ããã¢ãã¬ãããäœæãã3ã€ã®æ¹æ³ãæäŸããŸãã
- 宣èšç -èšå®ã»ããã¯xmlãã¡ã€ã«ã«ãã£ãŠèšè¿°ãããŸã
- ãã€ã㪠-DcpAppletIfããç¶æ¿ããå
±æã©ã€ãã©ãªãäœæããŸã
- å€éš -éåžžã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšãã
3çªç®ã®ãªãã·ã§ã³ã¯ãèšå®ããã¢ããªã±ãŒã·ã§ã³ã«åãæ¿ãããšãã«é
延ãåŒãèµ·ããå¯èœæ§ãããããããŸã£ããé©åã§ã¯ãããŸããïŒãŸããããã¥ã¡ã³ãã§ã¯ãå§ãã§ããŸããïŒã
2çªç®ã®ãªãã·ã§ã³ã¯æãæè»ã§ãããæåã®ãªãã·ã§ã³ãããè€éã§ãã
æåã®ãªãã·ã§ã³ã¯æå°éã®æè»æ§ã§ãããåæã«å¯èœãªéãã·ã³ãã«ã§ãã
ç¹ã«è€éãªèšå®ã¯å¿
èŠãªããããæåã®æ¹æ³ã䜿çšããŸãã
ããã«ã¯2ã€ã®ãã¡ã€ã«ãå¿
èŠã§ãã
- /usr/share/duicontrolpanel/desktops/calendarfeed.desktop-äœãäœãšåŒã°ããã©ãã«ããããèšè¿°ãã.desktopãã¡ã€ã«ïŒäžè¬ã«ã.desktopãã¡ã€ã«ã®å®å
šã«æšæºçãªç®çïŒ
- /usr/share/duicontrolpanel/uidescriptions/calendarfeed.xml-ç»é¢ã«è¡šç€ºãããäžé£ã®èšå®ã®èª¬æ
ããããé çªã«åæããŸãã
/usr/share/duicontrolpanel/desktops/calendarfeed.desktop [Desktop Entry] Type=ControlPanelApplet Name=Calendar Feed X-logical-id=calendar_feed_title X-translation-catalog=calendarfeed Icon= X-Maemo-Service=com.nokia.DuiControlPanel X-Maemo-Method=com.nokia.DuiControlPanelIf.appletPage X-Maemo-Object-Path=/ # this has to be identical to the value in Name X-Maemo-Fixed-Args=Calendar Feed [DUI] X-DUIApplet-Applet=libdeclarative.so [DCP] Category=Events Feed Order=100 Part=calendarfeed.xml Text2=Calendar events at Feed screen Text2-logical-id=calendar_feed_subtitle
æåã®ã»ã¯ã·ã§ã³ã¯æšæºã§ãã X-Maemo- *ãã©ã¡ãŒã¿ãŒã«å ããŠããã®ã¢ãã¬ãããéãããã«åŒã³åºãdbusã¡ãœãããšåŒã³åºãåŒæ°ãèšè¿°ããªãéãã
DUIã»ã¯ã·ã§ã³ã§ã¯ãå
±æã©ã€ãã©ãªã®æ¥ç¶æ¹æ³ã«ã€ããŠèª¬æããŸãã ç§ãã¡ã®å ŽåïŒå®£èšã¢ãã¬ããïŒã¯ãåžžã«libdeclarative.soã§ãã ãã€ããªã¢ãã¬ããã®å ŽåãDcpAppletIfã®åå«ãæã€å
±æã©ã€ãã©ãªåã¯ããã«ãããŸãã
DCPã»ã¯ã·ã§ã³ã«ã¯ãæ¿å
¥ããå Žæãå Žæãããã³å
容ã«é¢ããæ
å ±ãå«ãŸããŠããŸãã ãã®å Žåãã€ãã³ããã£ãŒãã®èšå®ã«å
¥ããŸãïŒTwitterãšFacebookã®ã¹ã€ãããšåãå ŽæïŒã Text2ã¯2è¡ç®ã§ãïŒéåžžã説æãŸãã¯ã¢ã€ãã ã®çŸåšã®ç¶æ
ã衚瀺ãããŸãïŒã
/usr/share/duicontrolpanel/uidescriptions/calendarfeed.xml <settings> <group title="calendar_feed_setting_group_behavior"> <boolean key="/apps/ControlPanel/CalendarFeed/EnableFeed" title="calendar_feed_setting_publish_to_feed"></boolean> <boolean key="/apps/ControlPanel/CalendarFeed/FillWithFuture" title="calendar_feed_setting_fill_with_future"></boolean> <boolean key="/apps/ControlPanel/CalendarFeed/LimitFuture" title="calendar_feed_setting_limit_future"></boolean> <integer key="/apps/ControlPanel/CalendarFeed/LimitDaysSize" title="calendar_feed_setting_future_limit_size" min="1" max="31"></integer> </group> <group title="calendar_feed_setting_group_display"> <integer key="/apps/ControlPanel/CalendarFeed/FeedSize" title="calendar_feed_setting_events_number" min="1" max="5"></integer> <boolean key="/apps/ControlPanel/CalendarFeed/ShowCalendarBar" title="calendar_feed_setting_show_calendar_bar"></boolean> <text key="/apps/ControlPanel/CalendarFeed/DateFormat" title="calendar_feed_setting_date_format">MMM, d</text> <boolean key="/apps/ControlPanel/CalendarFeed/HighlightToday" title="calendar_feed_setting_highlight_today"></boolean> </group> </settings>
ç¬ããŸããããã®äŸã§ã¯ã宣èšåã¢ãã¬ããã«å«ãŸããããŒããé€ããã¹ãŠã®ã¿ã€ãã®ããŒãããªã¹ãããŸãã
ãã¹ãŠã®ã¿ã€ãã®ããŒãã«ã€ããŠã2ã€ã®ãã©ã¡ãŒã¿ãŒãæšæºã§ãã
- key -GConfã®ããŒ
- title -UIã«è¡šç€ºãããååã 翻蚳ããæååã®IDãæå®ã§ããŸãïŒäŸã§è¡ãããããã«ïŒ
ã¯ãïŒ ãµãã©ã€ãºãµãã©ã€ãºïŒ Qt-shny MeeGo Harmattanã¯ãã¹ãŠGConfã䜿çšããŠå
éšèšå®ãä¿åããŸãã ãšããã§ãããã¯ã¢ããã«å
¥ãã®ã¯GConfã®èšå®ã§ãã
ã°ã«ãŒã -äžçš®ã®ã°ã«ãŒãããã¯ã¹ã®åœ¹å²ãå®è¡ããŸãïŒ2çªç®ã®ã¹ã¯ãªãŒã³ã·ã§ããã®è¡šç€ºäŸãåäœãšå€èŠ³ã®2ã€ã®ã°ã«ãŒãããããŸãïŒã ããã¥ã¡ã³ãã«ã¯ãã©ã¡ãŒã¿ãŒããªããšèšèŒãããŠããŸãããããã§ãã¿ã€ãã«ã¯æ£åžžã«æ©èœããŸãã
ããŒã« -ã¹ã€ããã æãæ®éã®...
æŽæ° -æŽæ°å€ãéžæããããã®ã¹ã©ã€ããŒã æšæºã«å ããŠãminãšmaxã®2ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã ã¹ã©ã€ããŒã®ç¯å²ãèšè¿°ããŸãã
ããã¹ã -ããã¹ããå
¥åããããã®ãã£ãŒã«ãã ã¡ãªã¿ã«ããã®ã¿ã€ãã®å Žåãã¿ã€ãã«ã¯ããã¥ã¡ã³ãã§ã宣èšãããŠããŸãããããããæ©èœããããšã¯ãã§ã«ããã£ãŠãããšæããŸãã
éžæ -ãã¿ã³ã®ã°ã«ãŒããåãã¿ã³ã¯ã1ã€ã®ãã©ã¡ãŒã¿ãŒãæã€ãµããªãã·ã§ã³ã§èšè¿°ãããŸã-ããŒããã®å ŽåãUIã«è¡šç€ºãããå€ã®åœ¹å²ãæãããŸãã åãªãã·ã§ã³ã«ã¯ãçªå·ä»ãã®ããã¹ããå¿
èŠã§ãïŒGConfã«ä¿åãããŸãïŒã
GConfItemã䜿çšãã
GConfã䜿çšãããŠããŸãããããã§ãGConfãæäœããããã®Qtã¯ã©ã¹-GConfItemããããŸãã ãããã2ã€ã®ã¡ãœãããå¿
èŠã§ãïŒ
valueïŒïŒãš
setïŒïŒ æåã¯QVariantã®ãã©ã¡ãŒã¿ãŒã®å€ãè¿ãã2çªç®ã¯ãã©ã¡ãŒã¿ãŒã®å€ãå€æŽããŸãã
ãã ãããã¹ãŠã®ã¿ã€ãããµããŒããããŠããããã§ã¯ãããŸããã 次ã®ã«ãŒã«ãé©çšãããŸãïŒgconfããã³qvariantæ©èœã«ããïŒïŒ
- QVariant ::ç¡å¹-gconfãã©ã¡ãŒã¿ãŒããããŸãã
- QVariant :: Int ã QVariant :: Double ã QVariant :: Boolã¯åçã®åã«å€æããŸã
- QVariant ::æååã¯utf8ãšã³ã³ãŒãã§ã®ã¿ãµããŒããããŸã
- QVariant :: StringList -utf8ã®æååã®ãªã¹ãã
- QVariant ::ãªã¹ããªã¹ãQVariant :: Int ã QVariant :: Double ã QVariant :: BoolãŸãã¯QVariant :: String ïŒ QVariant :: StringListãšããŠè¿ãããŸã ïŒããã¹ãŠã®èŠçŽ ã¯åãåã§ãªããã°ãªããŸãã
- ä»ã®ãã¹ãŠã®ã¿ã€ãïŒäž¡åŽïŒã¯ç¡èŠãããŸãã
宣èšåã¢ãã¬ããã®å Žåãã¢ãã¬ããã¯æååãããŒã«å€ãæŽæ°ãæäŸãããããããã¯å®å
šã«é©ããŠããŸãã
GConfItemã®äŸ
bool fillWithFuture = false; GConfItem fillConfItem("/apps/ControlPanel/CalendarFeed/FillWithFuture"); QVariant fillVariant = fillConfItem.value(); if (fillVariant.isValid()) fillWithFuture = fillVariant.toBool(); else fillConfItem.set(false);
ã«ã¬ã³ããŒããŒã¿ã®èªã¿åã
å®éãã¢ããªã±ãŒã·ã§ã³ã®æãéèŠãªéšåã§ãã æåŸã«ãããããã€ãã³ãããããããŸãã çè«çã«ã¯ããã¹ãŠãQt Mobilityãä»ããŠæ©èœããå®å
šã«ãŸãã¯ããã«è¿ãç¶æ
ã§æ©èœããå¿
èŠããããŸãã çµå±ã®ãšãããMeeGoã¯ã³ã¢ã§Qtã䜿çšããŠããŸãã n9ããªãªãŒã¹ããNokiaã¯ãæ¬è³ªçã«Qtã®ææè
ã§ãã ãã¹ãŠãå¯èœãªéãçµ±åããå¿
èŠããããŸããïŒ ã·ã¥ã·ã£ãããããã ãã€ãã®ããã«ãããã«ã¯è±ãæ€ããããŠããŸãã ããããå®éã«ã¯ãããšæçš¿ã®ããã«ã å°æ¥ã®äžä»£ã®ããã«ãããã®è±ãèšè¿°ããããšã
çµæ¥ã€ãã³ã
ã«ã¬ã³ããŒã«ã¯ãçµæ¥ïŒã€ãŸããæéãªãïŒã®ã€ãã³ããèšå®ããæ©èœããããŸãã QOrganizerã«ã¯ãã€ãã³ãã®
allDayãã©ã¡ãŒã¿ãŒããããŸãã ããã¯åžžã«
åœã§ãã ã«ã¬ã³ããŒã«è¡šç€ºããããã®ã«é¢ä¿ãªãã Vagueã¯ãéã®ããšãçå®ã§ãããšããèŠçãæšæž¬ããŸãïŒã€ãŸããQOrganizerãä»ããŠallDayã€ãã³ããäœæãããšãã«ã¬ã³ããŒã«äœãåé¡ãçºçããŸãïŒã ããã§ããã€ãã³ãã
allDayã§ãããã©ãããå€æããããã®ãã¥ãŒãªã¹ãã£ãã¯ãªæ¹æ³ããããŸãã
if (!isAllDay && startDateTime.time().hour() == 0 && startDateTime.time().minute() == 0 && endDateTime.time().hour() == 0 && endDateTime.time().minute() == 0 && startDateTime.date().addDays(1) == endDateTime.date()) isAllDay = true;
ToDoã¢ã€ãã
QOrganizerã¯ãToDoèŠçŽ ãããããšãç¥ã£ãŠããŸãã 圌ã¯ãããã®çµäºæ¥ãä¿åããŸãã ããã ãã§ã¯ãToDoãå®äºããŠãããã©ãããå€æããããšã¯äžå¯èœã§ãã ããã¯äžå¯èœã§ãã QOrganizerèªäœã«ã¯ãã®ãããªãã©ã°ããããŸãããQOrganizerãåºç€ãšãªãã¬ãã«ããããŒã¿ãåãåã£ããšãã«ã³ãã¯ãããŸããã åã®åé¡ãšã¯ç°ãªããQt Mobilityã«ãã解決çã¯ãããŸããã ãããŠãå°ãªããšãQtMobilityçµç±ã§ã¯ãªãããã§ãïŒå°ãªããšã次ã®ãã¡ãŒã ãŠã§ã¢ãŸã§ïŒã
ã¿ã€ã ãŸãŒã³
èŠã€ãã£ãæåã®2ã€ã®ãžã£ã ã«å ããŠã3çªç®ãçºèŠãããŸããã ãã£ãšæ¥œãããŠãšããŸããã¯ã ãã€ã³ãã§ãã ã«ã¬ã³ããŒãã·ã¹ãã ã«ä¿åãããããŒã¿æ§é ã«ã¯ãã€ãã³ããã©ã®ã¿ã€ã ãŸãŒã³ã§èšé²ããããã£ãŒã«ãããããŸãã ã€ãŸãããéå§æ¥ããã£ãŒã«ãã«åãå€ãæã€2ã€ã®ã€ãã³ããããå Žåãããããåæã«éå§ãããšããäºå®ã§ã¯ãããŸããã æéãæ£ããå€æããã«ã¯ãäž¡æ¹ã®ãã£ãŒã«ããå¿
èŠã§ãã ãããã£ãŠãUTCã§äœæããããšã¯ã¹ããŒããããã«ã¬ã³ããŒã䜿çšããå ŽåããŸãã¯CalDAVã«ãã£ãŠåæãããå
±éã®ã«ã¬ã³ããŒã䜿çšããç°ãªãã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒãããã䜿çšããå Žåã誀ã£ãæéã衚瀺ãããŸãã
ã«ã¬ã³ããŒã·ã¹ãã ã¯ã2ã€ã®ã¬ãã«ïŒé«ããã³äœïŒã§æ§ç¯ãããŠããŸãã QtMobilityã¯QOrganizerã¢ãžã¥ãŒã«ãšäžç·ã«äœ¿çšã§ããŸããQOrganizerã¢ãžã¥ãŒã«ã¯äœ¿ããããã§ãããäžèšã®çŸè±¡ã®åœ±é¿ãåããŸãïŒã¿ã€ã ãŸãŒã³ãæã€ãã£ãŒã«ãã®ååšãçãã ãã§ã¯ãããŸããïŒã äœãäœçœ®ã«ããmKCalã¯ãåžžã«æ£ããããŒã¿ãè¿ããŸããã䜿çšããã«ã¯ããŸã䟿å©ã§ã¯ãããŸããã
ã«ã¬ã³ããŒãã£ãŒãã¯ãããšããšQOrganizerã䜿çšããŠäœæãããŸããã
ãããã1ã€ã®ãã°ïŒé倧ãäžéšã®ãšããŸããã¯ãªã±ãŒã¹ã§ã®æéã®èª€ã£ã衚瀺ã«é¢é£ããïŒã®ââåºçŸåŸãããçš®ã®ç§»è¡æéãå§ãŸããŸãããçŸæç¹ã§ã¯ããããžã§ã¯ãã¯äž¡æ¹ã®ã¬ãã«ã䜿çšããŠããŸããæåã«ããã¹ãŠã®ã€ãã³ããQOrganizerãä»ããŠåéããã次ã«ãmKCalãä»ããŠåéãããã€ãã³ãã«å¿ããŠãæ¥ä»ã®æ¥µç«¯ãªå¢çããããããããŸããæ£ããããŒã¿ã¯ãåŸè
ããååŸãããŸãïŒåå¥ã®ããŒã¿æ§é ã§ïŒããã®åŸããµã€ã¯ã«ãæåã«é²ã¿ãå¿
èŠã«å¿ããŠããŒã¿ã眮ãæããããŸãããããããåã®æ®µèœãèªãã åŸãããã«è³ªåãçŸããŸãããããã«mKCalã«åãæ¿ããæ¹ãç°¡åã§ã¯ãããŸãããïŒãå®éãç§ã¯ç§»è¡ãèããŠããŸãããããããã®ãã°ã¯éåžžã«éããããã«ä¿®æ£ããå¿
èŠããããŸãããäž»ãªæ©èœãå®è£
ããå®å
šã«æ°ããã·ã¹ãã ãžã®ç§»è¡ã«ã¯ã2床èãããããããªãã°ããããããããŸãããããã£ãŠãäºéã®è§£æ±ºçãåããç·æ¥ã®ä¿®æ£ããã°ã©ã ãçºè¡ããããšã決å®ããå·éã«ããã¹ãŠã®é·æãšçæãæ¯èŒæ€èšããæ°ããã·ã¹ãã ã«åãæ¿ããŸããããšããã§ãmKCalïŒããã¯è«ççã§ãïŒã«ã¯ãæåã®2ã€ã®çŸè±¡ã«é¢ããæ£ããæ
å ±ããããŸãããããžã§ã¯ããã¡ã€ã«ãšãã®ä»ã®éåŠ
ããã§ãå®è£
ã¡ã«ããºã ãèŠã€ããŸããããã¹ãŠããŸãšããããšã¯æ®ã£ãŠããŸãããŸãã.proãã¡ã€ã«ãèŠãŠãã ãã TEMPLATE = lib TARGET = calendarfeed-client VERSION = 0.3.0 DEPENDPATH += . INCLUDEPATH += . \ /usr/include/libsynccommon \ /usr/include/libsyncprofile \ /usr/include/gq \ /usr/include/mkcal \ /usr/include/kcalcoren LIBS += -lsyncpluginmgr -lsyncprofile -lgq-gconf -lmkcal CONFIG += debug plugin meegotouchevents CONFIG += mobility MOBILITY += organizer QT += dbus #input SOURCES += \ calendarfeedplugin.cpp HEADERS +=\ calendarfeedplugin.h QMAKE_CXXFLAGS = -Wall \ -g \ -Wno-cast-align \ -O2 -finline-functions #install target.path = /usr/lib/sync/ system ("cd translations && lrelease -markuntranslated '' -idbased *.ts") client.path = /etc/sync/profiles/client client.files = xml/calendarfeed.xml sync.path = /etc/sync/profiles/sync sync.files = xml/sync/calendarfeed.xml service.path = /etc/sync/profiles/service service.files = xml/service/calendarfeed.xml settingsdesktop.path = /usr/share/duicontrolpanel/desktops settingsdesktop.files = settings/calendarfeed.desktop settingsxml.path = /usr/share/duicontrolpanel/uidescriptions settingsxml.files = settings/calendarfeed.xml translations.path = /usr/share/l10n/meegotouch translations.files += translations
Calendarfeed-clientãšããååïŒSyncFWã«ãããã®ïŒã§ãå
±æã©ã€ãã©ãªïŒSyncFWã»ã¯ã·ã§ã³ããèŠããŠããããã«ããã©ã°ã€ã³ã¯ãŸãã«ããã§ããå¿
èŠããããŸãïŒãæ§ç¯ããŠããŸããå¿
èŠãªãã¹ãŠã®ã·ã¹ãã ããããŒãšã©ã€ãã©ãªãæ¥ç¶ããŸããæ¥ç¶meegotucheventsãããããã«MEventFeedïŒç§ãã¡ã¯DBUSãçµç±ããŠè¿œå ããããã§ãé€å»æ¹æ³ã®åŒã³åºãã«æ®ãããŸããïŒãè¿œå qdbusãšç§»å床ã¯ãäž»å¬è
ã®æµãã ãã§ãªããã©ã®ãããªç§ãã¡ã®ããããšãœãŒã¹ãã¡ã€ã«ãææããŠããŸãããããŸã§ã®ãšããããã¹ãŠãæšæºã§ããã€ã³ã¹ããŒã«ã³ã¡ã³ãã®åŸã®ãã¹ãŠã®æãéèŠãªããã¹ãŠã®xmlããã³ãã¹ã¯ããããå¿
èŠãªãã©ã«ããŒïŒèšäºã®å¯Ÿå¿ããã»ã¯ã·ã§ã³ã«ç€ºãããŠããïŒã«é
眮ãããã®ãã©ã«ããŒã«ããŒã«ã©ã€ãºãé
眮ããŸã/ usr /ãã®ã³ã³ãã³ãå
±æ/ L10N / meegotouchããã®å Žåããã¡ã€ã«ã¯calendarfeed_ru.qmã®åœ¢åŒã§ããå¿
èŠããããŸããããã§ãcalendarfeedã¯ããã¹ã¯ããããã¡ã€ã«ã®X-translation-catalogãã©ã¡ãŒã¿ãŒã§æå®ããããã®ã§ããã€ã³ã¹ããŒã«ã¹ã¯ãªãã
SyncFWãã©ã°ã€ã³ã«ã¯èå³æ·±ãæ©èœã1ã€ãããŸãã圌ãèªèº«ã¯ãæ£ããã€ã³ã¹ããŒã«ããã³åé€ããæ¹æ³ãç¥ããŸãããåèµ·åãå¿
èŠã§ããããã«ãåé€ãããšãã¯ãã£ãŒãããã¢ã€ãã ãåé€ããå¿
èŠããããŸãããŸããã€ã³ã¹ããŒã«æã«ãæŽæ°ãã¿ã³ãæ©èœããããã«ãrefreshActionãè¿œå ãããšäŸ¿å©ã§ããdebããã±ãŒãžã«è¿œå ã§ãããã®ããã®2ã€ã®ã¹ã¯ãªããããããŸãã- postinst-ã€ã³ã¹ããŒã«çŽåŸã«å®è¡
- prerm-ã¢ã³ã€ã³ã¹ããŒã«ã®çŽåã«å®è¡
postinst
ããã§ã¯ããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ãïŒPR1.1ã§ã®ã¿æ©èœããPR1.0ã§ã¯ããã€ã¹ãåèµ·åããå¿
èŠããããŸãïŒãrefreshActionãè¿œå ããã¢ããªã±ãŒã·ã§ã³ããªã³ã«ããŠFeedã®ã¢ã€ãã ãæåã§æŽæ°ãããšæ瀺çã«èšããŸããäºèš
ãã£ãŒããããã©ã°ã€ã³ãšèŠçŽ ãåé€ããŸããã¡ãªã¿ã«ãæå®ããããã©ã°ã€ã³ã®ã€ã³ã¹ããŒã«æ¹æ³ã¯æåã®ã€ã³ã¹ããŒã«ã«ã¯åœ¹ç«ã¡ãŸãããå
±æã©ã€ãã©ãªãæŽæ°ããå ŽåããªããŒãåã«å€ãã©ã€ãã©ãªãåŒãç¶ã䜿çšãããŸãïŒã¡ã¢ãªããã¢ã³ããŒããããŸããïŒããããã°äžã«äžäŸ¿ãªç¹ããããŸãããããã«
ã¯ã
èšäºã¯ã€ãã«çµãããŸãããç§ã¯ãããæžãã®ã«ããããããŠãããããªãã¯ãããèªãã®ã«å°ãããããããŠãããšæããŸãããããããã®èšäºã®ãããã§ã次ã®ããšãåŠã³ãŸãããå®éããã¡ããããã®æçš¿ã«ã¯ãéçºäžã«åºäŒã£ããã¹ãŠã®ãã®ãå«ããŸããã§ããããããŠããã¹ãŠã詳现ã«èª¬æãããŠããããã§ã¯ãªãããã®æçš¿ã¯ãã§ã«é·ãããŸããç§ã®ç®æšã¯ããããã©ã®ããã«è¡ããããã瀺ãããšã§ãããçè«çãªæ
å ±ããã®æ
å ±ãžã®éã瀺ãããšã§ã¯ãããŸããã§ããããããããã®æ
å ±ãèå³æ·±ãå Žåã¯ãç§ã®ããã°ã§ãã®ã¢ããªã±ãŒã·ã§ã³ã®éçºäžã«ããã€ãã®ãæ
è¡ã¡ã¢ããèªãããšãã§ããŸãïŒãããã¡ã€ã«å
ã®ãªã³ã¯ïŒããããŠæåŸã«ããªã³ã¯ã®æïŒããªããèå³ãæã£ãŠãããšæããŸãã以äžã§ãïŒ