# HG changeset patch # User Sebastian Brannstrom # Date 1278844584 -3600 # Node ID 269e3f3e544a8ddc1952c7ed1097036314dc7cae # Parent 1c8b56cb6409efe4c03c652608dd0c0e8541eb47 Lots of fixes for 3rd edition. First test SIS file, 0.90(3) diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastClient_common.rls --- a/application/data/PodcastClient_common.rls Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastClient_common.rls Sun Jul 11 11:36:24 2010 +0100 @@ -23,4 +23,4 @@ rls_string STRING_r_caption "Podcatcher" rls_string STRING_r_short_caption "Podcatcher" -rls_string STRING_r_about_text_s60 "Podcatcher 1.00(%d)\nŠ 2007-2010 Sebastian Brannstrom, Lars Persson, Anders Fridlund, EmbedDev AB" +rls_string STRING_r_about_text_s60 "Podcatcher 0.90(%d)\nŠ 2007-2010 Sebastian Brannstrom, Lars Persson, Anders Fridlund, EmbedDev AB" diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastClient_english.rls --- a/application/data/PodcastClient_english.rls Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastClient_english.rls Sun Jul 11 11:36:24 2010 +0100 @@ -35,7 +35,7 @@ // Tab titles rls_string STRING_r_tabgroup_feeds "Feeds" rls_string STRING_r_tabgroup_queue "Queue" -rls_string STRING_r_tabgroup_queue_counter "Queue (%d)" +rls_string STRING_r_tabgroup_queue_counter "(%d) Queue" // Question dialogs rls_string STRING_r_add_feed_prompt "Enter search terms or feed address" @@ -127,11 +127,11 @@ // Show view -rls_string STRING_r_view_mark_as_played_cmd_short "Mark old" -rls_string STRING_r_view_mark_as_unplayed_cmd_short "Mark new" +rls_string STRING_r_view_mark_as_played_cmd_short "Mark old (*)" +rls_string STRING_r_view_mark_as_unplayed_cmd_short "Mark new (*)" rls_string STRING_r_view_download_show_cmd "Get" rls_string STRING_r_view_delete_show_cmd "Delete" -rls_string STRING_r_view_show_info_cmd "Info" +rls_string STRING_r_view_show_info_cmd "Info (#)" rls_string STRING_r_error_playback_failed "Could not play show" rls_string STRING_r_view_filter_shows_cmd "Show" rls_string STRING_r_view_filter_all_shows_cmd "All shows" @@ -157,3 +157,6 @@ rls_string STRING_r_error_http "Error: HTTP error %d" rls_string STRING_r_error_disk_full "Error: Disk full" +rls_string STRING_r_view_feed_feed_menu "Manage feeds" +rls_string STRING_r_view_shows_show_menu "Show" +rls_string STRING_r_view_queue_show_menu "Queue" diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastFeedView.ra --- a/application/data/PodcastFeedView.ra Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastFeedView.ra Sun Jul 11 11:36:24 2010 +0100 @@ -38,19 +38,36 @@ { MENU_ITEM { - command = EPodcastImportExportFeeds; - txt = STRING_r_view_import_export_feeds_cmd; - cascade = r_importexport_menu; + command = EPodcastUpdateAllFeeds; + txt= STRING_r_update_all_feeds_cmd; + }, + MENU_ITEM + { + command = EPodcastCancelUpdateAllFeeds; + txt = STRING_r_cancel_update_all_feeds_cmd; }, MENU_ITEM { - command = EPodcastAbout; - txt = STRING_r_view_about_cmd; - }, + command = EPodcastFeedFeedMenu; + txt = STRING_r_view_feed_feed_menu; + cascade = r_feed_feed_menu; + }, +// MENU_ITEM +// { +// command = EPodcastImportExportFeeds; +// txt = STRING_r_view_import_export_feeds_cmd; +// cascade = r_importexport_menu; +// }, MENU_ITEM { - command = EPodcastHelp; + command = EPodcastSettings; + txt = STRING_r_settings_cmd; + }, + MENU_ITEM + { + command = EPodcastFeedHelpMenu; txt = STRING_r_view_help; + cascade = r_feed_help_menu; }, MENU_ITEM { @@ -60,6 +77,23 @@ }; } +RESOURCE MENU_PANE r_feed_help_menu + { + items = { + + MENU_ITEM + { + command = EPodcastAbout; + txt = STRING_r_view_about_cmd; + }, + MENU_ITEM + { + command = EPodcastHelp; + txt = STRING_r_view_help; + } + }; + } + RESOURCE MENU_PANE r_importexport_menu { items = { @@ -76,6 +110,43 @@ }; } +RESOURCE MENU_PANE r_feed_feed_menu + { + items = { + MENU_ITEM + { + command = EPodcastAddFeed; + txt = STRING_r_view_add_feed_cmd; + }, + MENU_ITEM + { + txt = STRING_r_view_edit_feed_cmd; + command = EPodcastEditFeed; + }, + MENU_ITEM + { + txt = STRING_r_view_delete_feed_cmd; + command = EPodcastDeleteFeed; + }, +// MENU_ITEM +// { +// txt = STRING_r_update_feed_cmd; +// command = EPodcastUpdateFeed; +// }, + MENU_ITEM + { + command = EPodcastImportFeeds; + txt = STRING_r_view_import_feeds_cmd; + }, + MENU_ITEM + { + command = EPodcastExportFeeds; + txt = STRING_r_view_export_feeds_cmd; + } + }; + } + + RESOURCE CBA r_podcast_cba { buttons = @@ -92,92 +163,8 @@ hotkeys = r_podcast_feedview_hotkeys; menubar = r_podcast_feedview_menubar; cba = r_podcast_cba; -// toolbar = r_feedview_toolbar; } -//RESOURCE AVKON_TOOLBAR r_feedview_toolbar -// { -// flags = KAknToolbarFixed; -// items = -// { -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastUpdateAllFeeds; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_update_feed_short_cmd; -// helptxt = STRING_r_update_all_feeds_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastCancelUpdateAllFeeds; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_cancel_update_all_feeds_short_cmd; -// helptxt = STRING_r_cancel_update_all_feeds_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastAddFeed; -// control = AVKON_BUTTON -// { -// flags = KAknButtonTextInsideFrame; -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// //press_bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_add_feed_cmd_short; -// helptxt = STRING_r_view_add_feed_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastSettings; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// //press_bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_settings_cmd; -// helptxt = STRING_r_settings_cmd; -// } -// }; -// }; -// } -// };// items -// } - RESOURCE DIALOG r_podcast_add_feed_dlg { buttons = R_AVKON_SOFTKEYS_OK_CANCEL; @@ -249,24 +236,39 @@ }; } -RESOURCE STYLUS_POPUP_MENU r_feedview_popup_menu - { - items = - { - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_edit_feed_cmd_short; - command = EPodcastEditFeed; - }, - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_delete_feed_cmd_short; - command = EPodcastDeleteFeed; - }, - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_update_feed_short_cmd; - command = EPodcastUpdateFeed; - } - }; - } +RESOURCE FILESELECTIONDIALOG r_podcast_import_podcast +{ + title = STRING_r_view_import_feeds_title; + root_path = ""; + filters = + { + FILTER + { + filter_type = EFilenameFilter; + filter_style = EInclusiveFilter; + filter_data = { "*.*" }; + } + }; +} + +RESOURCE FILESELECTIONDIALOG r_podcast_export_feeds +{ + title = STRING_r_view_export_feeds_title; + root_path = ""; + filters = + { + FILTER + { + filter_type = EFilenameFilter; + filter_style = EInclusiveFilter; + filter_data = { "*.*" }; + } + }; +} + +RESOURCE FILENAMEPROMPTDIALOG r_podcast_filename_prompt_dialog +{ + filename_prompt = STRING_r_enter_filename; + default_filename = "feeds.xml"; + path = ""; +} diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastQueueView.ra --- a/application/data/PodcastQueueView.ra Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastQueueView.ra Sun Jul 11 11:36:24 2010 +0100 @@ -36,121 +36,51 @@ { MENU_ITEM { - command = EPodcastAbout; - txt = STRING_r_view_about_cmd; + command = EPodcastSuspendDownloads; + txt = STRING_r_view_stop_downloads_cmd; }, MENU_ITEM { + command = EPodcastResumeDownloads; + txt = STRING_r_view_resume_downloads_cmd; + }, + MENU_ITEM + { + command = EPodcastQueueShowMenu; + txt = STRING_r_view_queue_show_menu; + cascade = r_queue_show_menu; + }, + MENU_ITEM + { + command = EPodcastRemoveAllDownloads; + txt = STRING_r_view_remove_all_downloads_cmd; + }, + MENU_ITEM + { command = EPodcastHelp; txt = STRING_r_view_help; - }, - MENU_ITEM - { - command = EAknSoftkeyExit; - txt = STRING_r_exit_cmd; } }; } -//RESOURCE AVKON_TOOLBAR r_queueview_toolbar -// { -// flags = KAknToolbarFixed; -// items = -// { -// -// TBAR_CTRL -// { -// type = EAknCtButton; -// id =EPodcastSuspendDownloads; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_suspend_download_cmd; -// helptxt = STRING_r_view_stop_downloads_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id =EPodcastResumeDownloads; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_resume_short_dls_cmd; -// helptxt = STRING_r_view_resume_downloads_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastRemoveDownload; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_remove_download_short_cmd; -// helptxt = STRING_r_view_remove_download_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id =EPodcastRemoveAllDownloads; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_remove_all_downloads_cmd_short; -// helptxt = STRING_r_view_remove_all_downloads_cmd; -// } -// }; -// }; -// } -// }; -// } +RESOURCE MENU_PANE r_queue_show_menu + { + items = { + MENU_ITEM + { + txt = STRING_r_view_remove_download_short_cmd; + command = EPodcastRemoveDownload; + }, + MENU_ITEM + { + txt = STRING_r_view_move_up_short_cmd; + command = EPodcastMoveDownloadUp; + }, + MENU_ITEM + { + txt = STRING_r_view_move_down_short_cmd; + command = EPodcastMoveDownloadDown; + } + }; + } -RESOURCE STYLUS_POPUP_MENU r_queueview_popup_menu - { - items = - { - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_remove_download_short_cmd; - command = EPodcastRemoveDownload; - }, - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_move_up_short_cmd; - command = EPodcastMoveDownloadUp; - }, - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_move_down_short_cmd; - command = EPodcastMoveDownloadDown; - } - }; - } diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastSearchView.ra --- a/application/data/PodcastSearchView.ra Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastSearchView.ra Sun Jul 11 11:36:24 2010 +0100 @@ -20,7 +20,6 @@ { menubar = r_podcast_searchview_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_BACK; -// toolbar = r_searchview_toolbar; } @@ -54,70 +53,6 @@ }; } - -//RESOURCE AVKON_TOOLBAR r_searchview_toolbar -// { -// flags = KAknToolbarFixed; -// items = -// { -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastSearch; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_search; -// helptxt = STRING_r_update_all_feeds_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastCancelUpdateAllFeeds; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_cancel_update_all_feeds_short_cmd; -// helptxt = STRING_r_cancel_update_all_feeds_cmd; -// } -// }; -// }; -// }/*, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastAddSearchResult; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_add_feed_cmd_short; -// helptxt = STRING_r_view_add_feed_cmd; -// } -// }; -// }; -// }*/ -// };// items -// } - - RESOURCE CBA r_podcast_search_cba { buttons = @@ -155,7 +90,6 @@ }; } - RESOURCE DIALOG r_waitdlg { flags = EAknWaitNoteFlags; @@ -179,4 +113,3 @@ } }; } - diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastSettingsView.ra --- a/application/data/PodcastSettingsView.ra Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastSettingsView.ra Sun Jul 11 11:36:24 2010 +0100 @@ -73,19 +73,19 @@ associated_resource = r_on_off_texts; name = STRING_r_podcast_setting_autodownload; }, - AVKON_SETTING_ITEM - { - identifier = EPodcastSettingConnection; - setting_page_resource = r_podcast_connection_page_resource; - associated_resource = r_podcast_connection_texts; - name = STRING_r_podcast_setting_connection; - }, +// AVKON_SETTING_ITEM +// { +// identifier = EPodcastSettingConnection; +// setting_page_resource = r_podcast_connection_page_resource; +// associated_resource = r_podcast_connection_texts; +// name = STRING_r_podcast_setting_connection; +// }, AVKON_SETTING_ITEM { identifier = EPodcastSettingIAPList; setting_page_resource = r_setting_iap_page_resource; associated_resource = r_setting_iap_texts; - name = STRING_r_podcast_setting_iaplist; + name = STRING_r_podcast_setting_connection; } }; } @@ -104,42 +104,42 @@ default_input_mode = EAknEditorTextInputMode; } -RESOURCE AVKON_SETTING_PAGE r_podcast_connection_page_resource -{ - label= STRING_r_podcast_setting_connection; - type = EAknCtPopupSettingList; - editor_resource_id = r_setting_connection_popup_list_entry; -} - -RESOURCE POPUP_SETTING_LIST r_setting_connection_popup_list_entry -{ -} - -RESOURCE AVKON_POPUP_SETTING_TEXTS r_podcast_connection_texts -{ - setting_texts_resource = r_podcast_connection_closed; - popped_up_texts_resource = r_podcast_connection_opened; -} - -RESOURCE ARRAY r_podcast_connection_closed -{ - items = - { - AVKON_ENUMERATED_TEXT{value=EConnectionDefault; text = STRING_r_podcast_setting_default;}, - AVKON_ENUMERATED_TEXT{value=EConnectionAlwaysAsk; text = STRING_r_podcast_setting_alwaysask;}, - AVKON_ENUMERATED_TEXT{value=EConnectionUseIap; text = STRING_r_podcast_setting_useiap;} - }; -} - -RESOURCE ARRAY r_podcast_connection_opened -{ - items = - { - LBUF { txt=STRING_r_podcast_setting_default; }, - LBUF { txt=STRING_r_podcast_setting_alwaysask; }, - LBUF { txt=STRING_r_podcast_setting_useiap; } - }; -} +//RESOURCE AVKON_SETTING_PAGE r_podcast_connection_page_resource +//{ +// label= STRING_r_podcast_setting_connection; +// type = EAknCtPopupSettingList; +// editor_resource_id = r_setting_connection_popup_list_entry; +//} +// +//RESOURCE POPUP_SETTING_LIST r_setting_connection_popup_list_entry +//{ +//} +// +//RESOURCE AVKON_POPUP_SETTING_TEXTS r_podcast_connection_texts +//{ +// setting_texts_resource = r_podcast_connection_closed; +// popped_up_texts_resource = r_podcast_connection_opened; +//} +// +//RESOURCE ARRAY r_podcast_connection_closed +//{ +// items = +// { +// AVKON_ENUMERATED_TEXT{value=EConnectionDefault; text = STRING_r_podcast_setting_default;}, +// AVKON_ENUMERATED_TEXT{value=EConnectionAlwaysAsk; text = STRING_r_podcast_setting_alwaysask;}, +//// AVKON_ENUMERATED_TEXT{value=EConnectionUseIap; text = STRING_r_podcast_setting_useiap;} +// }; +//} +// +//RESOURCE ARRAY r_podcast_connection_opened +//{ +// items = +// { +// LBUF { txt=STRING_r_podcast_setting_default; }, +// LBUF { txt=STRING_r_podcast_setting_alwaysask; }, +// LBUF { txt=STRING_r_podcast_setting_useiap; } +// }; +//} RESOURCE AVKON_SETTING_PAGE r_podcast_autodownload_page_resource { @@ -266,7 +266,8 @@ { items = { - AVKON_ENUMERATED_TEXT{value=0; text = "";} + AVKON_ENUMERATED_TEXT{value=EConnectionDefault; text = STRING_r_podcast_setting_default;}, + AVKON_ENUMERATED_TEXT{value=EConnectionAlwaysAsk; text = STRING_r_podcast_setting_alwaysask;} }; } @@ -274,6 +275,7 @@ { items = { - LBUF { txt=""; } + LBUF { txt=STRING_r_podcast_setting_default; }, + LBUF { txt=STRING_r_podcast_setting_alwaysask; } }; } diff -r 1c8b56cb6409 -r 269e3f3e544a application/data/PodcastShowsView.ra --- a/application/data/PodcastShowsView.ra Sat Jul 10 13:35:21 2010 +0100 +++ b/application/data/PodcastShowsView.ra Sun Jul 11 11:36:24 2010 +0100 @@ -20,7 +20,6 @@ { menubar = r_podcast_showsview_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_BACK; -// toolbar = r_showsview_toolbar; } RESOURCE MENU_BAR r_podcast_showsview_menubar @@ -35,191 +34,61 @@ { items = { - MENU_ITEM + MENU_ITEM + { + command = EPodcastUpdateFeed; + txt = STRING_r_update_feed_cmd; + }, + MENU_ITEM + { + command = EPodcastCancelUpdateAllFeeds; + txt = STRING_r_cancel_update_all_feeds_cmd; + }, + MENU_ITEM + { + command = EPodcastShowsShowMenu; + txt = STRING_r_view_shows_show_menu; + cascade = r_shows_show_menu; + }, + MENU_ITEM { command = EPodcastMarkAllPlayed; txt = STRING_r_view_mark_all_played_cmd; }, -// MENU_ITEM -// { -// command = EPodcastFilterShows; -// txt = STRING_r_view_filter_shows_cmd; -// cascade = r_filtershows_menu; -// }, - MENU_ITEM - { - command = EPodcastAbout; - txt = STRING_r_view_about_cmd; - }, MENU_ITEM { command = EPodcastHelp; txt = STRING_r_view_help; - }, - MENU_ITEM - { - command = EAknSoftkeyExit; - txt = STRING_r_exit_cmd; } }; } -RESOURCE MENU_PANE r_filtershows_menu +RESOURCE MENU_PANE r_shows_show_menu { items = { - MENU_ITEM - { - command = EPodcastFilterShowsAll; - txt = STRING_r_view_filter_all_shows_cmd; - }, -/* MENU_ITEM - { - command = EPodcastFilterShowsNew; - txt = STRING_r_view_filter_new_shows_cmd; - }, - MENU_ITEM - { - command = EPodcastFilterShowsDownloaded; - txt = STRING_r_view_filter_downloaded_shows_cmd; - },*/ - MENU_ITEM - { - command = EPodcastFilterShowsNewAndDownloaded; - txt = STRING_r_view_filter_downloaded_new_shows_cmd; - } - }; + MENU_ITEM + { + command = EPodcastMarkAsPlayed; + txt = STRING_r_view_mark_as_played_cmd_short; + }, + MENU_ITEM + { + command = EPodcastMarkAsUnplayed; + txt = STRING_r_view_mark_as_unplayed_cmd_short; + }, + MENU_ITEM + { + command = EPodcastDeleteShow; + txt = STRING_r_view_delete_show_cmd; + }, + MENU_ITEM + { + txt = STRING_r_view_show_info_cmd; + command = EPodcastShowInfo; + } + }; } -//RESOURCE AVKON_TOOLBAR r_showsview_toolbar -// { -// flags = KAknToolbarFixed; -// items = -// { -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastUpdateFeed; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_update_feed_short_cmd; -// helptxt = STRING_r_update_feed_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastCancelUpdateAllFeeds; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_cancel_update_all_feeds_short_cmd; -// helptxt = STRING_r_cancel_update_all_feeds_cmd; -// } -// }; -// }; -// }, -//// we keep the download toolbar button in S^3, but always disable it -//// because there are drawing issues with only one item in the toolbar -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastDownloadShow; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_download_show_cmd; -// helptxt = STRING_r_view_download_show_cmd; -// } -// }; -// }; -// } -// , -// TBAR_CTRL -// { -// type = EAknCtButton; -// id =EPodcastDeleteShow; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_delete_show_cmd; -// helptxt = STRING_r_view_delete_show_cmd; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id = EPodcastMarkAsPlayed; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_mark_as_played_cmd_short; -// helptxt = STRING_r_view_mark_as_played_cmd_short; -// } -// }; -// }; -// }, -// TBAR_CTRL -// { -// type = EAknCtButton; -// id =EPodcastMarkAsUnplayed; -// control = AVKON_BUTTON -// { -// states = -// { -// AVKON_BUTTON_STATE -// { -// //bmpfile = AVKON_BITMAP_FILE; -// //bmpid = EMbmAvkonQgn_indi_find_goto; -// txt = STRING_r_view_mark_as_unplayed_cmd_short; -// helptxt = STRING_r_view_mark_as_unplayed_cmd_short; -// } -// }; -// }; -// } -// }; -// } - -RESOURCE STYLUS_POPUP_MENU r_showview_popup_menu - { - items = - { - STYLUS_POPUP_MENU_ITEM - { - txt = STRING_r_view_show_info_cmd; - command = EPodcastShowInfo; - } - }; - } RESOURCE DIALOG r_show_info_note { diff -r 1c8b56cb6409 -r 269e3f3e544a application/group/Podcast.mmp --- a/application/group/Podcast.mmp Sat Jul 10 13:35:21 2010 +0100 +++ b/application/group/Podcast.mmp Sun Jul 11 11:36:24 2010 +0100 @@ -106,3 +106,5 @@ LIBRARY hlplch.lib LIBRARY bitgdi.lib LIBRARY commonui.lib // CDocumentHandler +LIBRARY estlib.lib +//LIBRARY libc.lib diff -r 1c8b56cb6409 -r 269e3f3e544a application/inc/Podcast.hrh --- a/application/inc/Podcast.hrh Sat Jul 10 13:35:21 2010 +0100 +++ b/application/inc/Podcast.hrh Sun Jul 11 11:36:24 2010 +0100 @@ -67,7 +67,11 @@ EPodcastFilterShowsAll, EPodcastFilterShowsNew, EPodcastFilterShowsDownloaded, - EPodcastFilterShowsNewAndDownloaded + EPodcastFilterShowsNewAndDownloaded, + EPodcastFeedFeedMenu, + EPodcastShowsShowMenu, + EPodcastQueueShowMenu, + EPodcastFeedHelpMenu }; enum TPodcastControl @@ -80,7 +84,6 @@ EPodcastSettingConnection, EPodcastSettingIAPList, EPodcastAboutDlg, - EPodcastFeedsToolbarExtension, EQueryControl, EPodcastShowInfoImage, EWaitDlg @@ -100,9 +103,9 @@ enum TConnectionSetting { EConnectionDefault = 0, - EConnectionAlwaysAsk = 1, - EConnectionUseNetwork = 2, - EConnectionUseIap = 0x7FFF + EConnectionAlwaysAsk = -1 +// EConnectionUseNetwork = 2, +// EConnectionUseIap = 0x7FFF }; #endif diff -r 1c8b56cb6409 -r 269e3f3e544a application/inc/PodcastFeedView.h --- a/application/inc/PodcastFeedView.h Sat Jul 10 13:35:21 2010 +0100 +++ b/application/inc/PodcastFeedView.h Sun Jul 11 11:36:24 2010 +0100 @@ -97,6 +97,9 @@ // from MImageHandlerCallback void ImageOperationCompleteL(TInt aError, TUint aHandle, CPodcastModel& aPodcastModel); + void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane); + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + private: void FormatFeedInfoListBoxItemL(CFeedInfo& aFeedInfo, TBool aIsUpdating = EFalse); void HandleAddFeedL(); diff -r 1c8b56cb6409 -r 269e3f3e544a application/inc/buildno.h --- a/application/inc/buildno.h Sat Jul 10 13:35:21 2010 +0100 +++ b/application/inc/buildno.h Sun Jul 11 11:36:24 2010 +0100 @@ -1,2 +1,2 @@ // Build number generated by increment_buildno.py, do not edit manually -#define BUILD_NO 28 \ No newline at end of file +#define BUILD_NO 3 \ No newline at end of file diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/buildno.txt --- a/application/sis/buildno.txt Sat Jul 10 13:35:21 2010 +0100 +++ b/application/sis/buildno.txt Sun Jul 11 11:36:24 2010 +0100 @@ -1,1 +1,1 @@ -28 \ No newline at end of file +3 \ No newline at end of file diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/make_s60_3rd_sis.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/application/sis/make_s60_3rd_sis.cmd Sun Jul 11 11:36:24 2010 +0100 @@ -0,0 +1,6 @@ +del *.sis +makesis -dc:\symbian\S60_3rd_FP1 podcatcher_udeb.pkg +signsis podcatcher_udeb.sis podcatcher_udeb_signed.sis podcast.cer podcast.key + +makesis -dc:\symbian\S60_3rd_FP1 podcatcher_urel.pkg +signsis podcatcher_urel.sis podcatcher_urel_signed.sis podcast.cer podcast.key \ No newline at end of file diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/make_s60_5th_sis.cmd --- a/application/sis/make_s60_5th_sis.cmd Sat Jul 10 13:35:21 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -del *.sis -makesis -dc:\symbian\S60_5th_Edition_SDK_v1.0 podcatcher_udeb.pkg -signsis podcatcher_udeb.sis podcatcher_udeb_signed.sis podcast.cer podcast.key - -makesis -dc:\symbian\S60_5th_Edition_SDK_v1.0 podcatcher_urel.pkg -signsis podcatcher_urel.sis podcatcher_urel_signed.sis podcast.cer podcast.key \ No newline at end of file diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/podcatcher_udeb.pkg --- a/application/sis/podcatcher_udeb.pkg Sat Jul 10 13:35:21 2010 +0100 +++ b/application/sis/podcatcher_udeb.pkg Sun Jul 11 11:36:24 2010 +0100 @@ -1,7 +1,7 @@ &EN :"Symbian Foundation" %{"Podcatcher"} -#{"Podcatcher"},(0xA0009D00), 1, 00, 28, TYPE=SA +#{"Podcatcher"},(0xA0009D00), 0, 90, 3, TYPE=SA ;Supports S60 3rd edition [0x101F7961], 0, 0, 0, {"Series60ProductID"} diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/podcatcher_udeb.sis Binary file application/sis/podcatcher_udeb.sis has changed diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/podcatcher_udeb_signed.sis Binary file application/sis/podcatcher_udeb_signed.sis has changed diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/podcatcher_udeb_template.pkg --- a/application/sis/podcatcher_udeb_template.pkg Sat Jul 10 13:35:21 2010 +0100 +++ b/application/sis/podcatcher_udeb_template.pkg Sun Jul 11 11:36:24 2010 +0100 @@ -1,7 +1,7 @@ &EN :"Symbian Foundation" %{"Podcatcher"} -#{"Podcatcher"},(0xA0009D00), 1, 00, BUILDNO, TYPE=SA +#{"Podcatcher"},(0xA0009D00), 0, 90, BUILDNO, TYPE=SA ;Supports S60 3rd edition [0x101F7961], 0, 0, 0, {"Series60ProductID"} diff -r 1c8b56cb6409 -r 269e3f3e544a application/sis/podcatcher_urel.pkg --- a/application/sis/podcatcher_urel.pkg Sat Jul 10 13:35:21 2010 +0100 +++ b/application/sis/podcatcher_urel.pkg Sun Jul 11 11:36:24 2010 +0100 @@ -1,7 +1,7 @@ &EN :"Symbian Foundation" %{"Podcatcher"} -#{"Podcatcher"},(0xA0009D00), 1, 00, 28, TYPE=SA +#{"Podcatcher"},(0xA0009D00), 1, 00, 3, TYPE=SA ;Supports S60 3rd edition [0x101F7961], 0, 0, 0, {"Series60ProductID"} diff -r 1c8b56cb6409 -r 269e3f3e544a application/src/PodcastFeedView.cpp --- a/application/src/PodcastFeedView.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/application/src/PodcastFeedView.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -31,7 +31,9 @@ #include #include #include -//#include +#include +#include +#include #include "Podcatcher.pan" const TInt KMaxFeedNameLength = 100; @@ -710,72 +712,89 @@ void CPodcastFeedView::HandleImportFeedsL() { -// TFileName fileName; -// fileName.Zero(); -// TFileName startFolder; -// startFolder.Zero(); -// TInt types = AknCommonDialogsDynMem::EMemoryTypePhone | AknCommonDialogsDynMem::EMemoryTypeMMC |AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| AknCommonDialogsDynMem::EMemoryTypeRemote; -// -// HBufC *title = iCoeEnv->AllocReadResourceLC(R_PODCAST_SELECT_OPML); -// if (AknCommonDialogsDynMem::RunSelectDlgLD (types, fileName, -// startFolder, NULL, NULL, *title)) -// { -// -// if(fileName.Length()>0) -// { -// HBufC *waitText = iEikonEnv->AllocReadResourceLC(R_IMPORTING); -// iOpmlState = EOpmlImporting; -// ShowWaitDialogL(*waitText); -// CleanupStack::PopAndDestroy(waitText); -// -// TRAPD(err, iPodcastModel.FeedEngine().ImportFeedsL(fileName)); -// -// if (err != KErrNone) { -// TBuf message; -// iEikonEnv->ReadResourceL(message, R_IMPORT_FEED_FAILURE); -// ShowErrorMessageL(message); -// } -// } -// -// } -// CleanupStack::PopAndDestroy(title); + CAknMemorySelectionDialog* memDlg = + CAknMemorySelectionDialog::NewL(ECFDDialogTypeNormal, ETrue); + CleanupStack::PushL(memDlg); + CAknMemorySelectionDialog::TMemory memory = + CAknMemorySelectionDialog::EPhoneMemory; + + if (memDlg->ExecuteL(memory)) + { + TFileName importName; + + if (memory==CAknMemorySelectionDialog::EMemoryCard) + { + importName = PathInfo:: MemoryCardRootPath(); + } + else + { + importName = PathInfo:: PhoneMemoryRootPath(); + } + + CAknFileSelectionDialog* dlg = CAknFileSelectionDialog::NewL(ECFDDialogTypeNormal, R_PODCAST_IMPORT_PODCAST); + CleanupStack::PushL(dlg); + + dlg->SetDefaultFolderL(importName); + + if(dlg->ExecuteL(importName)) + { + if(importName.Length()>0) + { + iPodcastModel.FeedEngine().ImportFeedsL(importName); + UpdateListboxItemsL(); + } + } + CleanupStack::PopAndDestroy(dlg); + } + CleanupStack::PopAndDestroy(memDlg); } void CPodcastFeedView::HandleExportFeedsL() { -// TFileName fileName; -// fileName.Copy(_L("feeds.opml")); -// TFileName startFolder; -// startFolder.Zero(); -// TInt types = AknCommonDialogsDynMem::EMemoryTypePhone | AknCommonDialogsDynMem::EMemoryTypeMMC |AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| AknCommonDialogsDynMem::EMemoryTypeRemote; -// -// HBufC *title = iCoeEnv->AllocReadResourceLC(R_PODCAST_SELECT_FOLDER); -// if (AknCommonDialogsDynMem::RunSaveDlgLD (types, fileName, -// startFolder, NULL, NULL, *title)) -// { -// TFileName temp; -// TRAPD(err, iPodcastModel.FeedEngine().ExportFeedsL(temp)); -// BaflUtils::CopyFile(iEikonEnv->FsSession(), temp, fileName); -// BaflUtils::DeleteFile(iEikonEnv->FsSession(),temp); -// if (err == KErrNone) -// { -// UpdateListboxItemsL(); -// TInt numFeeds = iPodcastModel.FeedEngine().GetSortedFeeds().Count(); -// -// TBuf message; -// TBuf templ; -// iEikonEnv->ReadResourceL(templ, R_EXPORT_FEED_SUCCESS); -// message.Format(templ, numFeeds); -// ShowOkMessageL(message); -// } -// else -// { -// TBuf message; -// iEikonEnv->ReadResourceL(message, R_EXPORT_FEED_FAILURE); -// ShowErrorMessageL(message); -// } -// } -// CleanupStack::PopAndDestroy(title); + CAknMemorySelectionDialog* memDlg = + CAknMemorySelectionDialog::NewL(ECFDDialogTypeSave, ETrue); + CleanupStack::PushL(memDlg); + CAknMemorySelectionDialog::TMemory memory = + CAknMemorySelectionDialog::EPhoneMemory; + + if (memDlg->ExecuteL(memory)) + { + TFileName pathName; + + if (memory==CAknMemorySelectionDialog::EMemoryCard) + { + pathName = PathInfo::MemoryCardRootPath(); + } + else + { + pathName = PathInfo::PhoneMemoryRootPath(); + } + + CAknFileSelectionDialog* dlg = CAknFileSelectionDialog::NewL(ECFDDialogTypeSave, R_PODCAST_EXPORT_FEEDS); + CleanupStack::PushL(dlg); + + if(dlg->ExecuteL(pathName)) + { + CAknFileNamePromptDialog *fileDlg = CAknFileNamePromptDialog::NewL(R_PODCAST_FILENAME_PROMPT_DIALOG); + CleanupStack::PushL(fileDlg); + fileDlg->SetPathL(pathName); + TFileName fileName; + if (fileDlg->ExecuteL(fileName) && fileName.Length() > 0) + { + pathName.Append(fileName); + TFileName temp; + iPodcastModel.FeedEngine().ExportFeedsL(temp); + RFs fs; + fs.Connect(); + BaflUtils::CopyFile(fs, temp, pathName); + BaflUtils::DeleteFile(fs,temp); + fs.Close(); + } + CleanupStack::PopAndDestroy(fileDlg); + } + CleanupStack::PopAndDestroy(dlg); + } + CleanupStack::PopAndDestroy(memDlg); } void CPodcastFeedView::CheckResumeDownloadL() @@ -887,3 +906,32 @@ { return iViewingShows; } + +void CPodcastFeedView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) + { + if(aResourceId == R_PODCAST_FEEDVIEW_MENU) + { + aMenuPane->SetItemDimmed(EPodcastUpdateAllFeeds, iUpdatingRunning); + aMenuPane->SetItemDimmed(EPodcastCancelUpdateAllFeeds, !iUpdatingRunning); + aMenuPane->SetItemDimmed(EPodcastSettings, iUpdatingRunning); + aMenuPane->SetItemDimmed(EPodcastFeedFeedMenu, iUpdatingRunning); +// aMenuPane->SetItemDimmed(EPodcastImportExportFeeds, iUpdatingRunning); + } + } + +TKeyResponse CPodcastFeedView::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) + { + if (aType == EEventKey) + { + switch (aKeyEvent.iCode) { + case EKeyBackspace: + case EKeyDelete: + HandleCommandL(EPodcastDeleteFeedHardware); + break; + default: + break; + } + } + return CPodcastListView::OfferKeyEventL(aKeyEvent, aType); + } + diff -r 1c8b56cb6409 -r 269e3f3e544a application/src/PodcastQueueView.cpp --- a/application/src/PodcastQueueView.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/application/src/PodcastQueueView.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -67,8 +67,6 @@ iPodcastModel.FeedEngine().AddObserver(this); iPodcastModel.ShowEngine().AddObserver(this); - CleanupStack::PopAndDestroy(); - SetEmptyTextL(R_PODCAST_EMPTY_QUEUE); } @@ -310,8 +308,21 @@ void CPodcastQueueView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) { - if(aResourceId == R_PODCAST_SHOWSVIEW_MENU) + if(aResourceId == R_QUEUE_SHOW_MENU) { - aMenuPane->SetItemDimmed(EPodcastMarkAllPlayed, ETrue); + TBool dimDown = (iListContainer->Listbox()->CurrentItemIndex() >= iPodcastModel.ActiveShowList().Count() - 1 ? + ETrue : EFalse); + TBool dimUp = (iListContainer->Listbox()->CurrentItemIndex() <= 0 ? + ETrue : EFalse); + + aMenuPane->SetItemDimmed(EPodcastMoveDownloadDown, dimDown); + aMenuPane->SetItemDimmed(EPodcastMoveDownloadUp, dimUp); + } + else if (aResourceId == R_PODCAST_QUEUEVIEW_MENU) + { + aMenuPane->SetItemDimmed(EPodcastQueueShowMenu, iPodcastModel.ActiveShowList().Count() == 0); + aMenuPane->SetItemDimmed(EPodcastRemoveAllDownloads, iPodcastModel.ActiveShowList().Count() == 0); + aMenuPane->SetItemDimmed(EPodcastSuspendDownloads, iPodcastModel.SettingsEngine().DownloadSuspended()); + aMenuPane->SetItemDimmed(EPodcastResumeDownloads, !iPodcastModel.SettingsEngine().DownloadSuspended()); } } diff -r 1c8b56cb6409 -r 269e3f3e544a application/src/PodcastSettingsView.cpp --- a/application/src/PodcastSettingsView.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/application/src/PodcastSettingsView.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -24,8 +24,8 @@ #include #include #include "SettingsEngine.h" - -//#include +#include +#include #include #include @@ -46,36 +46,36 @@ { CArrayPtr< CAknEnumeratedText > * enumeratedArr = EnumeratedTextArray(); CArrayPtr< HBufC > * poppedUpTextArray = PoppedUpTextArray(); - enumeratedArr->ResetAndDestroy(); - poppedUpTextArray->ResetAndDestroy(); CDesCArrayFlat *iapArray = iPodcastModel.IAPNames(); TBool valueExists = EFalse; DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); for (int i=0;iCount();i++) { - HBufC *buf = (*iapArray)[i].AllocL(); - poppedUpTextArray->AppendL(buf); - - TInt iapId = iPodcastModel.IAPIds()[i].iIapId; - DP2("IAP name='%S', id=%d", buf, iapId); - - if (iapId == ExternalValue()) { - valueExists = ETrue; - } - // both arrays destroy themselves, so we need two copies to prevent USER 44 - HBufC *buf2 = (*iapArray)[i].AllocL(); - - CAknEnumeratedText *enumerated = new CAknEnumeratedText(iapId, buf2); - enumeratedArr->AppendL(enumerated); + HBufC *buf = (*iapArray)[i].AllocL(); + poppedUpTextArray->AppendL(buf); + + TInt iapId = iPodcastModel.IAPIds()[i].iIapId; + DP2("IAP name='%S', id=%d", buf, iapId); + + if (iapId == ExternalValue() || ExternalValue() == 0 || ExternalValue() == -1) + { + valueExists = ETrue; + } + + // both arrays destroy themselves, so we need two copies to prevent USER 44 + HBufC *buf2 = (*iapArray)[i].AllocL(); + + CAknEnumeratedText *enumerated = new CAknEnumeratedText(iapId, buf2); + enumeratedArr->AppendL(enumerated); } DP1("valueExists=%d", valueExists); if (!valueExists && iPodcastModel.IAPIds().Count() > 0 ) { - DP1("Setting iIap=%d", iPodcastModel.IAPIds()[0].iIapId); - iIap = iPodcastModel.IAPIds()[0].iIapId; - LoadL(); - DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); + DP1("Setting iIap=%d", iPodcastModel.IAPIds()[0].iIapId); + iIap = iPodcastModel.IAPIds()[0].iIapId; + LoadL(); + DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); } TRAPD(err, HandleTextArrayUpdateL()); @@ -121,91 +121,91 @@ }; -class CConnectionSetting: public CAknEnumeratedTextPopupSettingItem -{ -public: - CConnectionSetting(TInt aResourceId, TInt& aValue, CPodcastModel &aPodcastModel) : - CAknEnumeratedTextPopupSettingItem(aResourceId, aValue), iPodcastModel(aPodcastModel) - { - } - - ~CConnectionSetting() - { - } - - void RefreshConnectionListL() - { - CArrayPtr< CAknEnumeratedText > * enumeratedArr = EnumeratedTextArray(); - CArrayPtr< HBufC > * poppedUpTextArray = PoppedUpTextArray(); - - CDesCArrayFlat *snapArray = iPodcastModel.SNAPNames(); - - TBool valueExists = EFalse; - DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); - for (int i=0;iCount();i++) { - HBufC *buf = (*snapArray)[i].AllocL(); - poppedUpTextArray->InsertL(EConnectionUseNetwork+i,buf); - - TInt snapId = iPodcastModel.SNAPIds()[i].iIapId; - DP2("SNAP name='%S', id=%d", buf, snapId); - - if (snapId == ExternalValue()) { - valueExists = ETrue; - } - // both arrays destroy themselves, so we need two copies to prevent USER 44 - HBufC *buf2 = (*snapArray)[i].AllocL(); - - CAknEnumeratedText *enumerated = new CAknEnumeratedText(EConnectionUseNetwork+i, buf2); - enumeratedArr->InsertL(EConnectionUseNetwork+i, enumerated); - } - - DP1("valueExists=%d", valueExists); - if (!valueExists && iPodcastModel.SNAPIds().Count() > 0 ) { - DP1("Setting i=%d", iPodcastModel.SNAPIds()[0].iIapId); - LoadL(); - DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); - } - - TRAPD(err, HandleTextArrayUpdateL()); - - if (err != KErrNone) { - DP1("Leave in HandleTextArrayUpdateL, err=%d", err); - } - } - - void CompleteConstructionL() - { - DP("CIapSetting::CompleteConstructionL BEGIN"); - CAknEnumeratedTextPopupSettingItem::CompleteConstructionL(); - RefreshConnectionListL(); - DP("CIapSetting::CompleteConstructionL END"); - } - - void EditItemL(TBool aCalledFromMenu) - { - DP("CIapSetting::EditItemL BEGIN"); - LoadL(); - CAknEnumeratedTextPopupSettingItem::EditItemL(aCalledFromMenu); - StoreL(); - DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); - DP("CIapSetting::EditItemL END"); - } - - void HandleSettingPageEventL(CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType) - { - DP("CIapSetting::HandleSettingPageEventL BEGIN"); - CAknSettingItem::HandleSettingPageEventL(aSettingPage, aEventType); - /*if (aEventType == EEventSettingOked) - { - DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); - StoreL(); - }*/ - DP("CIapSetting::HandleSettingPageEventL END"); - } - -protected: - CPodcastModel& iPodcastModel; -}; +//class CConnectionSetting: public CAknEnumeratedTextPopupSettingItem +//{ +//public: +// CConnectionSetting(TInt aResourceId, TInt& aValue, CPodcastModel &aPodcastModel) : +// CAknEnumeratedTextPopupSettingItem(aResourceId, aValue), iPodcastModel(aPodcastModel) +// { +// } +// +// ~CConnectionSetting() +// { +// } +// +// void RefreshConnectionListL() +// { +// CArrayPtr< CAknEnumeratedText > * enumeratedArr = EnumeratedTextArray(); +// CArrayPtr< HBufC > * poppedUpTextArray = PoppedUpTextArray(); +// +// CDesCArrayFlat *snapArray = iPodcastModel.SNAPNames(); +// +// TBool valueExists = EFalse; +// DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); +// for (int i=0;iCount();i++) { +// HBufC *buf = (*snapArray)[i].AllocL(); +// poppedUpTextArray->InsertL(EConnectionUseNetwork+i,buf); +// +// TInt snapId = iPodcastModel.SNAPIds()[i].iIapId; +// DP2("SNAP name='%S', id=%d", buf, snapId); +// +// if (snapId == ExternalValue()) { +// valueExists = ETrue; +// } +// // both arrays destroy themselves, so we need two copies to prevent USER 44 +// HBufC *buf2 = (*snapArray)[i].AllocL(); +// +// CAknEnumeratedText *enumerated = new CAknEnumeratedText(EConnectionUseNetwork+i, buf2); +// enumeratedArr->InsertL(EConnectionUseNetwork+i, enumerated); +// } +// +// DP1("valueExists=%d", valueExists); +// if (!valueExists && iPodcastModel.SNAPIds().Count() > 0 ) { +// DP1("Setting i=%d", iPodcastModel.SNAPIds()[0].iIapId); +// LoadL(); +// DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); +// } +// +// TRAPD(err, HandleTextArrayUpdateL()); +// +// if (err != KErrNone) { +// DP1("Leave in HandleTextArrayUpdateL, err=%d", err); +// } +// } +// +// void CompleteConstructionL() +// { +// DP("CIapSetting::CompleteConstructionL BEGIN"); +// CAknEnumeratedTextPopupSettingItem::CompleteConstructionL(); +// RefreshConnectionListL(); +// DP("CIapSetting::CompleteConstructionL END"); +// } +// +// void EditItemL(TBool aCalledFromMenu) +// { +// DP("CIapSetting::EditItemL BEGIN"); +// LoadL(); +// CAknEnumeratedTextPopupSettingItem::EditItemL(aCalledFromMenu); +// StoreL(); +// DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); +// DP("CIapSetting::EditItemL END"); +// } +// +// void HandleSettingPageEventL(CAknSettingPage* aSettingPage, TAknSettingPageEvent aEventType) +// { +// DP("CIapSetting::HandleSettingPageEventL BEGIN"); +// CAknSettingItem::HandleSettingPageEventL(aSettingPage, aEventType); +// /*if (aEventType == EEventSettingOked) +// { +// DP2("InternalValue=%d, ExternalValue=%d", InternalValue(), ExternalValue()); +// StoreL(); +// }*/ +// DP("CIapSetting::HandleSettingPageEventL END"); +// } +// +//protected: +// CPodcastModel& iPodcastModel; +//}; class CPodcastSettingItemList:public CAknSettingItemList { @@ -226,33 +226,8 @@ se.SetBaseDir(iShowDir); DP1("Base Dir: %S", &iShowDir); se.SetUpdateAutomatically((TAutoUpdateSetting)iAutoUpdate); - DP1("Update automatically: %d", iAutoUpdate); - switch(iConnection) - { - case EConnectionDefault: - { - DP("Specific IAP: 0 Ask user"); - se.SetSpecificIAP(0); - }break; - case EConnectionAlwaysAsk: - { - DP("Specific IAP: -1 Ask user"); - se.SetSpecificIAP(-1); - }break; - - case EConnectionUseIap: - { - DP1("Specific NETWORK: %d", iIap); - se.SetSpecificIAP((iIap|KUseIAPFlag)); - }break; - default: - case EConnectionUseNetwork: - { - DP1("Specific IAP: %d", iIap); - TInt snapIndex = iConnection-EConnectionUseNetwork; - se.SetSpecificIAP(iPodcastModel.SNAPIds()[snapIndex].iIapId); - }break; - } + DP1("Update automatically: %d", iAutoUpdate); + se.SetSpecificIAP(iIap); DP1("Download automatically: %d", iAutoDownload); se.SetDownloadAutomatically(iAutoDownload); @@ -270,15 +245,15 @@ { DP("UpdateSettingVisibility BEGIN"); LoadSettingsL(); - TBool dimAutoUpdate = iConnection == EConnectionAlwaysAsk; - TBool dimIAP = iConnection < EConnectionUseIap; + TBool dimAutoUpdate = iIap == EConnectionAlwaysAsk; +// TBool dimIAP = EFalse; //iConnection < EConnectionUseIap; iSettingAutoUpdate->SetHidden(dimAutoUpdate); - iSettingIAP->SetHidden(dimIAP); - if(!dimIAP) - { - iSettingIAP->RefreshConnectionListL(); - } +// iSettingIAP->SetHidden(dimIAP); +// if(!dimIAP) +// { +// iSettingIAP->RefreshConnectionListL(); +// } ListBox()->ScrollToMakeItemVisible(0); TRAP_IGNORE(HandleChangeInItemArrayOrVisibilityL()); @@ -287,41 +262,49 @@ void EditItemL (TInt aIndex, TBool aCalledFromMenu) { - DP("EditItemL BEGIN"); -// if (aIndex == 0) { -// TFileName selectedFolder; -// selectedFolder.Copy(iShowDir); -// TFileName startFolder; -// startFolder.Zero(); -// TInt types = AknCommonDialogsDynMem::EMemoryTypePhone | AknCommonDialogsDynMem::EMemoryTypeMMC |AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| AknCommonDialogsDynMem::EMemoryTypeRemote; -// -// HBufC *title = iCoeEnv->AllocReadResourceLC(R_PODCAST_SELECT_FOLDER); -// if (AknCommonDialogsDynMem::RunFolderSelectDlgLD (types, selectedFolder, -// startFolder, NULL, NULL, *title)) -// { -// _LIT(KPodcastsDir, "Podcasts"); -// TInt pos = selectedFolder.Find(KPodcastsDir); -// if (pos == KErrNotFound || pos != selectedFolder.Length()-9) -// { -// // append "Podcasts" if the folder isn't already called this -// selectedFolder.Append(KPodcastsDir); -// } -// -// if (selectedFolder[selectedFolder.Length()-1] != '\\') -// { -// selectedFolder.Append(_L("\\")); -// } -// -// iShowDir.Copy(selectedFolder); -// LoadSettingsL(); -// } -// CleanupStack::PopAndDestroy(title); -// } -// else { -// CAknSettingItemList::EditItemL(aIndex,aCalledFromMenu); -// } -// StoreSettingsL(); -// UpdateSettingVisibility(); + if (aIndex == 0) { + CAknMemorySelectionDialog* memDlg = + CAknMemorySelectionDialog::NewL(ECFDDialogTypeNormal, ETrue); + CleanupStack::PushL(memDlg); + CAknMemorySelectionDialog::TMemory memory = + CAknMemorySelectionDialog::EPhoneMemory; + + if (memDlg->ExecuteL(memory)) + { + TFileName importName; + + if (memory==CAknMemorySelectionDialog::EMemoryCard) + { + importName = PathInfo:: MemoryCardRootPath(); + } + else + { + importName = PathInfo:: PhoneMemoryRootPath(); + } + + CAknFileSelectionDialog* dlg = CAknFileSelectionDialog::NewL(ECFDDialogTypeSave, R_PODCAST_SHOWDIR_SELECTOR); + HBufC* select = iEikonEnv->AllocReadResourceLC(R_PODCAST_SOFTKEY_SELECT); + dlg->SetLeftSoftkeyFileL(*select); + CleanupStack::PopAndDestroy(select); + CleanupStack::PushL(dlg); + + dlg->SetDefaultFolderL(importName); + + if(dlg->ExecuteL(importName)) + { + importName.Append(_L("Podcasts")); + iShowDir.Copy(importName); + LoadSettingsL(); + } + CleanupStack::PopAndDestroy(dlg); + } + CleanupStack::PopAndDestroy(memDlg); + } + else { + CAknSettingItemList::EditItemL(aIndex,aCalledFromMenu); + } + StoreSettingsL(); + UpdateSettingVisibility(); DP("EditItemL END"); } @@ -342,37 +325,37 @@ iAutoUpdate = se.UpdateAutomatically(); iIap = se.SpecificIAP(); - if( iIap == 0) - { - iConnection = EConnectionDefault; - } - else if ( iIap == -1) - { - iConnection = EConnectionAlwaysAsk; - } - else if ( (iIap & KUseIAPFlag)) - { - iConnection = EConnectionUseIap; - iIap = iIap& KUseIAPMask; - } - else - { - TInt snapIndex = 0; - TInt cnt = iPodcastModel.SNAPIds().Count(); - while(snapIndex < cnt && ((TInt)iPodcastModel.SNAPIds()[snapIndex].iIapId) != iIap) - { - snapIndex++; - } - - if(snapIndex != cnt) - { - iConnection = EConnectionUseNetwork+snapIndex; - } - else - { - iConnection = EConnectionAlwaysAsk; - } - } +// if( iIap == 0) +// { +// iConnection = EConnectionDefault; +// } +// else if ( iIap == -1) +// { +// iConnection = EConnectionAlwaysAsk; +// } +// else if ( (iIap & KUseIAPFlag)) +// { +// iConnection = EConnectionUseIap; +// iIap = iIap& KUseIAPMask; +// } +// else +// { +// TInt snapIndex = 0; +// TInt cnt = iPodcastModel.SNAPIds().Count(); +// while(snapIndex < cnt && ((TInt)iPodcastModel.SNAPIds()[snapIndex].iIapId) != iIap) +// { +// snapIndex++; +// } +// +// if(snapIndex != cnt) +// { +// iConnection = EConnectionUseI+snapIndex; +// } +// else +// { +// iConnection = EConnectionAlwaysAsk; +// } +// } iAutoDownload = se.DownloadAutomatically(); @@ -387,10 +370,10 @@ iSettingAutoUpdate = new (ELeave) CAknEnumeratedTextPopupSettingItem(aSettingId, iAutoUpdate); return iSettingAutoUpdate; break; - case EPodcastSettingConnection: - DP("EPodcastSettingConnection"); - return new (ELeave) CConnectionSetting (aSettingId, iConnection, iPodcastModel); - break; +// case EPodcastSettingConnection: +// DP("EPodcastSettingConnection"); +// return new (ELeave) CConnectionSetting (aSettingId, iConnection, iPodcastModel); +// break; case EPodcastSettingIAPList: DP("EPodcastSettingIAPList"); iSettingIAP = new (ELeave) CIapSetting (aSettingId, iIap, iPodcastModel); @@ -417,7 +400,7 @@ TInt iAutoDownload; CAknSettingItem *iSettingAutoDownload; - TInt iConnection; +// TInt iConnection; TInt iIap; CIapSetting *iSettingIAP; diff -r 1c8b56cb6409 -r 269e3f3e544a application/src/PodcastShowsView.cpp --- a/application/src/PodcastShowsView.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/application/src/PodcastShowsView.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -105,6 +105,7 @@ void CPodcastShowsView::ConstructL() { + DP("CPodcastShowsView::ConstructL BEGIN"); BaseConstructL(R_PODCAST_SHOWSVIEW); CPodcastListView::ConstructL(); @@ -115,7 +116,7 @@ iPodcastModel.FeedEngine().AddObserver(this); iPodcastModel.ShowEngine().AddObserver(this); - CleanupStack::PopAndDestroy(); + DP("CPodcastShowsView::ConstructL END"); } void CPodcastShowsView::CreateIconsL() @@ -172,9 +173,7 @@ break; case 106: case '#': - if (activeShow->DownloadState() == ENotDownloaded) { - HandleCommandL(EPodcastDownloadShow); - } + HandleCommandL(EPodcastShowInfo); break; case EKeyBackspace: case EKeyDelete: @@ -636,10 +635,29 @@ void CPodcastShowsView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) { + TBool updatingState = iPodcastModel.FeedEngine().ClientState() != EIdle && iPodcastModel.ActiveFeedInfo() && + iPodcastModel.FeedEngine().ActiveClientUid() == iPodcastModel.ActiveFeedInfo()->Uid(); + if(aResourceId == R_PODCAST_SHOWSVIEW_MENU) + { + aMenuPane->SetItemDimmed(EPodcastMarkAllPlayed, updatingState || iPodcastModel.ActiveShowList().Count() == 0); + aMenuPane->SetItemDimmed(EPodcastUpdateFeed, updatingState); + aMenuPane->SetItemDimmed(EPodcastCancelUpdateAllFeeds, !updatingState); + aMenuPane->SetItemDimmed(EPodcastShowsShowMenu, updatingState || iPodcastModel.ActiveShowList().Count() == 0); + } + else if (aResourceId == R_SHOWS_SHOW_MENU) { - TBool updatingState = iPodcastModel.FeedEngine().ClientState() != EIdle && iPodcastModel.FeedEngine().ActiveClientUid() == iPodcastModel.ActiveFeedInfo()->Uid(); - aMenuPane->SetItemDimmed(EPodcastMarkAllPlayed, updatingState); + TInt index = iListContainer->Listbox()->CurrentItemIndex(); + if (index >= 0 && index < iPodcastModel.ActiveShowList().Count()) + { + CShowInfo *info = iPodcastModel.ActiveShowList()[index]; + TBool hideDeleteShowCmd = info->DownloadState() != EDownloaded; + TBool hideMarkOld = info->PlayState() == EPlayed; + + aMenuPane->SetItemDimmed(EPodcastMarkAsPlayed, hideMarkOld); + aMenuPane->SetItemDimmed(EPodcastMarkAsUnplayed, !hideMarkOld); + aMenuPane->SetItemDimmed(EPodcastDeleteShow, hideDeleteShowCmd); + } } } diff -r 1c8b56cb6409 -r 269e3f3e544a engine/group/bld.inf --- a/engine/group/bld.inf Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/group/bld.inf Sun Jul 11 11:36:24 2010 +0100 @@ -28,8 +28,8 @@ PRJ_EXPORTS // export pre-build sqlite ..\sqlite\sqlite_podcatcher_winscw.lib \epoc32\release\winscw\udeb\sqlite_podcatcher.lib -//..\sqlite\sqlite_podcatcher_gcce.lib \epoc32\release\armv5\udeb\sqlite_podcatcher.lib -//..\sqlite\sqlite_podcatcher_gcce.lib \epoc32\release\armv5\urel\sqlite_podcatcher.lib +..\sqlite\sqlite_podcatcher_gcce.lib \epoc32\release\armv5\udeb\sqlite_podcatcher.lib +..\sqlite\sqlite_podcatcher_gcce.lib \epoc32\release\armv5\urel\sqlite_podcatcher.lib ..\config\podcatcher.sqlite \epoc32\winscw\c\private\A0009D00\podcatcher.sqlite.template ..\config\defaultfeeds.xml \epoc32\winscw\c\private\A0009D00\defaultfeeds.xml diff -r 1c8b56cb6409 -r 269e3f3e544a engine/group/engine.mmp --- a/engine/group/engine.mmp Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/group/engine.mmp Sun Jul 11 11:36:24 2010 +0100 @@ -23,7 +23,7 @@ SOURCEPATH ..\src USERINCLUDE ..\inc SYSTEMINCLUDE \epoc32\include -INCLUDE ..\..\engine\sqlite\inc +USERINCLUDE ..\..\engine\sqlite\inc // Engine SOURCE HttpClient.cpp diff -r 1c8b56cb6409 -r 269e3f3e544a engine/inc/ConnectionEngine.h --- a/engine/inc/ConnectionEngine.h Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/inc/ConnectionEngine.h Sun Jul 11 11:36:24 2010 +0100 @@ -49,8 +49,8 @@ enum TConnectionType { EUserSelectConnection, - ESNAPConnection, - EMobilityConnection, +// ESNAPConnection, +// EMobilityConnection, EDefaultConnection, EIAPConnection }; diff -r 1c8b56cb6409 -r 269e3f3e544a engine/sqlite/sqlite_podcatcher_gcce.lib Binary file engine/sqlite/sqlite_podcatcher_gcce.lib has changed diff -r 1c8b56cb6409 -r 269e3f3e544a engine/src/ConnectionEngine.cpp --- a/engine/src/ConnectionEngine.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/src/ConnectionEngine.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -61,8 +61,8 @@ // iMobility = CActiveCommsMobilityApiExt::NewL( iConnection, *this ); // } // -// iConnectionState = iStatus.Int() == KErrNone?CConnectionEngine::EConnected:CConnectionEngine::ENotConnected; -// ReportConnectionL( iStatus.Int() ); + iConnectionState = iStatus.Int() == KErrNone?CConnectionEngine::EConnected:CConnectionEngine::ENotConnected; + ReportConnectionL( iStatus.Int() ); } void CConnectionEngine::DoCancel() @@ -149,12 +149,13 @@ iConnection.Close(); User::LeaveIfError( iConnection.Open( iSocketServer ) ); -// // Connect using UI Setting -// if(aConnectionType == EDefaultConnection) -// { -// iConnection.Start( iStatus ); -// SetActive(); -// } + + // Connect using UI Setting + if(aConnectionType == EDefaultConnection || EUserSelectConnection) + { + iConnection.Start( iStatus ); + SetActive(); + } // else if(aConnectionType == EUserSelectConnection) // { // TBool selected = ConnectionSettingL(); @@ -186,14 +187,14 @@ // // SetActive(); // } -// else if (aConnectionType == EIAPConnection) -// { -// iCommdbPreference.SetIapId((iPodcastModel.SettingsEngine().SpecificIAP()& KUseIAPMask)); -// iCommdbPreference.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); -// iCommdbPreference.SetDirection(ECommDbConnectionDirectionOutgoing); -// iConnection.Start( iCommdbPreference, iStatus ); -// SetActive(); -// } + else if (aConnectionType == EIAPConnection) + { + iCommdbPreference.SetIapId((iPodcastModel.SettingsEngine().SpecificIAP()& KUseIAPMask)); + iCommdbPreference.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); + iCommdbPreference.SetDirection(ECommDbConnectionDirectionOutgoing); + iConnection.Start( iCommdbPreference, iStatus ); + SetActive(); + } // // Connect using SNAP // else // { diff -r 1c8b56cb6409 -r 269e3f3e544a engine/src/FeedInfo.cpp --- a/engine/src/FeedInfo.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/src/FeedInfo.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -225,7 +225,7 @@ { // If this fails, no reason to worry iFeedIcon = new CFbsBitmap(); - TRAP_IGNORE(aPodcastModel->ImageHandler().LoadFileAndScaleL(FeedIcon(), ImageFileName(), TSize(64,56), *this, Uid())); + TRAP_IGNORE(aPodcastModel->ImageHandler().LoadFileAndScaleL(FeedIcon(), ImageFileName(), TSize(44,44), *this, Uid())); } DP("CFeedInfo::SetImageFileNameL END"); } diff -r 1c8b56cb6409 -r 269e3f3e544a engine/src/HttpClient.cpp --- a/engine/src/HttpClient.cpp Sat Jul 10 13:35:21 2010 +0100 +++ b/engine/src/HttpClient.cpp Sun Jul 11 11:36:24 2010 +0100 @@ -97,14 +97,14 @@ { iPodcastModel.ConnectionEngine().StartL(CConnectionEngine::EDefaultConnection); } - else if( (iPodcastModel.SettingsEngine().SpecificIAP()&KUseIAPFlag)) + else if( (iPodcastModel.SettingsEngine().SpecificIAP())) { iPodcastModel.ConnectionEngine().StartL(CConnectionEngine::EIAPConnection); } - else - { - iPodcastModel.ConnectionEngine().StartL(CConnectionEngine::EMobilityConnection); - } +// else +// { +// iPodcastModel.ConnectionEngine().StartL(CConnectionEngine::EMobilityConnection); +// } } DP("ConnectHttpSessionL END"); }