Сохранение отчёта в избранное

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере описывается работа с избранными отчетами. После запуска примера в окне приложения добавляются кнопка «Сохранить» для сохранения настроек отчёта и кнопка «Добавить в избранное», по нажатию которой текущий отчёт становится избранным, а первый отчёт в списке избранного удаляется.

Исходный код

Для выполнения примера необходимо взамен метода showReport класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:

// Отображает экспресс-отчёт
- (void)showReport:(UIViewController *)controller {
    // Создаём панель инструментов
    UIToolbar *toolBar = [[[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 45)] autorelease];
    // Определяем настройки отображения кнопок
    NSDictionary *appearSettings = [NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Arial" size:14], UITextAttributeFont, nil];
    // Создаём кнопку для сохранения настроек отчёта в файл
    UIBarButtonItem *saveButton = [[[UIBarButtonItem alloc] initWithTitle: NSLocalizedString(@"SAVE", nil)
        style:UIBarButtonItemStyleBordered target:self action:@selector(save)] autorelease];
    [saveButton setTitleTextAttributes:appearSettings forState:UIControlStateNormal];
    // Создаём кнопку для сохранения отчёта в избранное
    UIBarButtonItem *favoriteButton = [[[UIBarButtonItem alloc] initWithTitle: NSLocalizedString(@"ADD_TO_FAVORITE", nil)
        style:UIBarButtonItemStyleBordered target:self action:@selector(favorite)] autorelease];
    [favoriteButton setTitleTextAttributes:appearSettings forState:UIControlStateNormal];
    // Добавляем кнопку на панель инструментов
    [toolBar setItems: [NSArray arrayWithObjects: saveButton, favoriteButton, nil]];
    [self.view addSubview:toolBar];
}
// Сохраняет настройки отчёта в файл
- (void) save {
    m_metabase->saveReport(m_olapReport);
    printf("Текущее время: %s\n", convertDate(NDate::date()));
    printf("Время последнего сохранения отчёта: %s\n", convertDate(m_olapReport->descriptor()->modifiedDate()));
}
// Преобразует указанную дату в строку
const char * convertDate (SNDate date) {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"dd.MM.yyyy hh:mm:ss"];
    NSString *stringFromDate = [formatter stringFromDate: (NSDate *)date->nsObject()];
    [formatter release];
    return NString::stringWithNSString(stringFromDate)->UTF8String();
}
// Добавляет отчёт в избранное
- (void) favorite {
    SPPLMetabaseRepositoryFavoriteDescriptor favorite = m_metabase->saveReportAsFavorite(m_olapReportDescriptor,                                                                                       NStr("FavoriteDashboardReport"), false);
    printf("Идентификатор избранного объекта репозитория: %s \n", favorite->objectId()->UTF8String());
    printf("Наименование избранного объекта репозитория: %s \n", favorite->name()->UTF8String());
    // Получаем массив всех избранных отчётов
    SNArray favorites = m_metabase->favoriteDescriptors();
    for (int i = 0; i < favorites->count() - 1; i++) {
        SPPLMetabaseRepositoryFavoriteDescriptor descriptor = favorites->objectAtIndex<PPLMetabaseRepositoryFavoriteDescriptor>(i);
        if (descriptor != NULL) {
            printf("Наименование: %s \n", descriptor->name()->UTF8String());
        }
    }
    printf("Количество избранных объектов репозитория до удаления: %d \n", favorites->count());
    // Удаляем первый избранный отчёт
    m_metabase->removeFavorite(favorites->objectAtIndex<PPLMetabaseRepositoryFavoriteDescriptor>(0));
    printf("Количество избранных объектов репозитория после удаления: %d \n", m_metabase->favoriteDescriptors()->count());
}

В результате выполнения примера будут добавлены кнопки для сохранения настроек отчёта в файл и добавления отчёта в избранное. После нажатия на кнопку «Сохранить отчёт» в консоли среды разработки будут выведены текущее время и время последнего сохранения отчёта:

Текущее время: 05.09.2014 10:15:12

Время последнего сохранения отчёта: 05.09.2014 10:15:12

После нажатия на кнопку «Добавить в избранное» в консоли среды разработки будет выведен идентификатор и наименование нового избранного отчёта, а также общее количество избранных объектов репозитория до и после удаления первого из них:

Идентификатор избранного объекта репозитория: OLAP_MOB_FavoriteDashboardReport_499A431FE591AE8DCC54490F8C2409B3

Наименование избранного объекта репозитория: FavoriteDashboardReport

Количество избранных объектов репозитория до удаления: 1

Количество избранных объектов репозитория после удаления: 0


Аналогичный результат получим, если в методе favorite заменим строку

SPPLMetabaseRepositoryFavoriteDescriptor favorite = m_metabase->saveReportAsFavorite(olapDescriptor,
        NStr("FavoriteDashboardReport"), false);

на следующую:

SPPLMetabaseRepositoryFavoriteDescriptor favorite = m_metabase->saveReportAsFavorite(m_olapReport, NStr("FavoriteDashboardReport"));

См. также:

Примеры использования библиотеки pplib++