#pragma once
/*
* Copyright (C) 2005-2017 Team KODI
* http://kodi.tv
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with KODI; see the file COPYING. If not, see
* .
*
*/
#include
#include
/*
* Internal Structures to have "C"-Style data transfer
*/
extern "C"
{
typedef struct AddonToKodiFuncTable_kodi_gui_general
{
void (*lock)();
void (*unlock)();
int (*get_screen_height)(void* kodiBase);
int (*get_screen_width)(void* kodiBase);
int (*get_video_resolution)(void* kodiBase);
int (*get_current_window_dialog_id)(void* kodiBase);
int (*get_current_window_id)(void* kodiBase);
} AddonToKodiFuncTable_kodi_gui_general;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogContextMenu
{
int (*open)(void* kodiBase, const char *heading, const char *entries[], unsigned int size);
} AddonToKodiFuncTable_kodi_gui_dialogContextMenu;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress
{
void* (*new_dialog)(void* kodiBase, const char *title);
void (*delete_dialog)(void* kodiBase, void* handle);
char* (*get_title)(void* kodiBase, void* handle);
void (*set_title)(void* kodiBase, void* handle, const char *title);
char* (*get_text)(void* kodiBase, void* handle);
void (*set_text)(void* kodiBase, void* handle, const char *text);
bool (*is_finished)(void* kodiBase, void* handle);
void (*mark_finished)(void* kodiBase, void* handle);
float (*get_percentage)(void* kodiBase, void* handle);
void (*set_percentage)(void* kodiBase, void* handle, float percentage);
void (*set_progress)(void* kodiBase, void* handle, int currentItem, int itemCount);
} AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogFileBrowser
{
bool (*show_and_get_directory)(void* kodiBase, const char* shares, const char* heading, const char* path_in, char** path_out, bool writeOnly);
bool (*show_and_get_file)(void* kodiBase, const char* shares, const char* mask, const char* heading, const char* path_in, char** path_out, bool use_thumbs, bool use_file_directories);
bool (*show_and_get_file_from_dir)(void* kodiBase, const char* directory, const char* mask, const char* heading, const char* path_in, char** path_out, bool use_thumbs, bool use_file_directories, bool singleList);
bool (*show_and_get_file_list)(void* kodiBase, const char* shares, const char* mask, const char* heading, char*** file_list, unsigned int* entries, bool use_thumbs, bool use_file_directories);
bool (*show_and_get_source)(void* kodiBase, const char* path_in, char** path_out, bool allow_network_shares, const char* additional_share, const char* type);
bool (*show_and_get_image)(void* kodiBase, const char* shares, const char* heading, const char* path_in, char** path_out);
bool (*show_and_get_image_list)(void* kodiBase, const char* shares, const char* heading, char*** file_list, unsigned int* entries);
void (*clear_file_list)(void* kodiBase, char*** file_list, unsigned int entries);
} AddonToKodiFuncTable_kodi_gui_dialogFileBrowser;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogKeyboard
{
bool (*show_and_get_input_with_head)(void* kodiBase, const char* text_in, char** text_out, const char* heading, bool allow_empty_result, bool hiddenInput, unsigned int auto_close_ms);
bool (*show_and_get_input)(void* kodiBase, const char* text_in, char** text_out, bool allow_empty_result, unsigned int auto_close_ms);
bool (*show_and_get_new_password_with_head)(void* kodiBase, const char* password_in, char** password_out, const char* heading, bool allow_empty_result, unsigned int auto_close_ms);
bool (*show_and_get_new_password)(void* kodiBase, const char* password_in, char** password_out, unsigned int auto_close_ms);
bool (*show_and_verify_new_password_with_head)(void* kodiBase, char** password_out, const char* heading, bool allow_empty_result, unsigned int auto_close_ms);
bool (*show_and_verify_new_password)(void* kodiBase, char** password_out, unsigned int auto_close_ms);
int (*show_and_verify_password)(void* kodiBase, const char* password_in, char** password_out, const char* heading, int retries, unsigned int auto_close_ms);
bool (*show_and_get_filter)(void* kodiBase, const char* text_in, char** text_out, bool searching, unsigned int auto_close_ms);
bool (*send_text_to_active_keyboard)(void* kodiBase, const char* text, bool close_keyboard);
bool (*is_keyboard_activated)(void* kodiBase);
} AddonToKodiFuncTable_kodi_gui_dialogKeyboard;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogNumeric
{
bool (*show_and_verify_new_password)(void* kodiBase, char** password);
int (*show_and_verify_password)(void* kodiBase, const char* password, const char *heading, int retries);
bool (*show_and_verify_input)(void* kodiBase, const char* verify_in, char** verify_out, const char* heading, bool verify_input);
bool (*show_and_get_time)(void* kodiBase, tm *time, const char *heading);
bool (*show_and_get_date)(void* kodiBase, tm *date, const char *heading);
bool (*show_and_get_ip_address)(void* kodiBase, const char* ip_address_in, char** ip_address_out, const char *heading);
bool (*show_and_get_number)(void* kodiBase, const char* input_in, char** input_out, const char *heading, unsigned int auto_close_ms);
bool (*show_and_get_seconds)(void* kodiBase, const char* time_in, char** time_out, const char *heading);
} AddonToKodiFuncTable_kodi_gui_dialogNumeric;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogOK
{
void (*show_and_get_input_single_text)(void* kodiBase, const char *heading, const char *text);
void (*show_and_get_input_line_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2);
} AddonToKodiFuncTable_kodi_gui_dialogOK;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogProgress
{
void* (*new_dialog)(void* kodiBase);
void (*delete_dialog)(void* kodiBase, void* handle);
void (*open)(void* kodiBase, void* handle);
void (*set_heading)(void* kodiBase, void* handle, const char* heading);
void (*set_line)(void* kodiBase, void* handle, unsigned int lineNo, const char* line);
void (*set_can_cancel)(void* kodiBase, void* handle, bool canCancel);
bool (*is_canceled)(void* kodiBase, void* handle);
void (*set_percentage)(void* kodiBase, void* handle, int percentage);
int (*get_percentage)(void* kodiBase, void* handle);
void (*show_progress_bar)(void* kodiBase, void* handle, bool pnOff);
void (*set_progress_max)(void* kodiBase, void* handle, int max);
void (*set_progress_advance)(void* kodiBase, void* handle, int nSteps);
bool (*abort)(void* kodiBase, void* handle);
} AddonToKodiFuncTable_kodi_gui_dialogProgress;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogSelect
{
int (*open)(void* kodiBase, const char *heading, const char *entries[], unsigned int size, int selected, bool autoclose);
} AddonToKodiFuncTable_kodi_gui_dialogSelect;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogTextViewer
{
void (*open)(void* kodiBase, const char *heading, const char *text);
} AddonToKodiFuncTable_kodi_gui_dialogTextViewer;
typedef struct AddonToKodiFuncTable_kodi_gui_dialogYesNo
{
bool (*show_and_get_input_single_text)(void* kodiBase, const char *heading, const char *text, bool *canceled, const char *noLabel, const char *yesLabel);
bool (*show_and_get_input_line_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2, const char *noLabel, const char *yesLabel);
bool (*show_and_get_input_line_button_text)(void* kodiBase, const char *heading, const char *line0, const char *line1, const char *line2, bool *canceled, const char *noLabel, const char *yesLabel);
} AddonToKodiFuncTable_kodi_gui_dialogYesNo;
typedef struct AddonToKodiFuncTable_kodi_gui_listItem
{
void* (*create)(void* kodiBase, const char* label, const char* label2, const char* icon_image, const char* thumbnail_image, const char* path);
void (*destroy)(void* kodiBase, void* handle);
char* (*get_label)(void* kodiBase, void* handle);
void (*set_label)(void* kodiBase, void* handle, const char* label);
char* (*get_label2)(void* kodiBase, void* handle);
void (*set_label2)(void* kodiBase, void* handle, const char* label);
char* (*get_icon_image)(void* kodiBase, void* handle);
void (*set_icon_image)(void* kodiBase, void* handle, const char* image);
char* (*get_art)(void* kodiBase, void* handle, const char* type);
void (*set_art)(void* kodiBase, void* handle, const char* type, const char* image);
char* (*get_path)(void* kodiBase, void* handle);
void (*set_path)(void* kodiBase, void* handle, const char* path);
} AddonToKodiFuncTable_kodi_gui_listItem;
#define ADDON_MAX_CONTEXT_ENTRIES 20
#define ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH 80
typedef struct gui_context_menu_pair
{
unsigned int id;
char name[ADDON_MAX_CONTEXT_ENTRY_NAME_LENGTH];
} gui_context_menu_pair;
typedef struct AddonToKodiFuncTable_kodi_gui_window
{
void* (*create)(void* kodiBase, const char* xml_filename, const char* default_skin, bool as_dialog, bool is_media);
void (*destroy)(void* kodiBase, void* handle);
void (*set_callbacks)(void* kodiBase, void* handle, void* clienthandle,
bool (*)(void* handle),
bool (*)(void* handle, int),
bool (*)(void* handle, int),
bool (*)(void* handle, int),
void (*)(void* handle, int, gui_context_menu_pair*, unsigned int*),
bool (*)(void* handle, int, unsigned int));
bool (*show)(void* kodiBase, void* handle);
bool (*close)(void* kodiBase, void* handle);
bool (*do_modal)(void* kodiBase, void* handle);
void (*clear_item_list)(void* kodiBase, void* handle);
void (*add_list_item)(void* kodiBase, void* handle, void* item, int item_position);
void* (*get_list_item)(void* kodiBase, void* handle, int listPos);
} AddonToKodiFuncTable_kodi_gui_window;
typedef struct AddonToKodiFuncTable_kodi_gui
{
AddonToKodiFuncTable_kodi_gui_general* general;
AddonToKodiFuncTable_kodi_gui_dialogContextMenu* dialogContextMenu;
AddonToKodiFuncTable_kodi_gui_dialogExtendedProgress* dialogExtendedProgress;
AddonToKodiFuncTable_kodi_gui_dialogFileBrowser* dialogFileBrowser;
AddonToKodiFuncTable_kodi_gui_dialogKeyboard* dialogKeyboard;
AddonToKodiFuncTable_kodi_gui_dialogNumeric* dialogNumeric;
AddonToKodiFuncTable_kodi_gui_dialogOK* dialogOK;
AddonToKodiFuncTable_kodi_gui_dialogProgress* dialogProgress;
AddonToKodiFuncTable_kodi_gui_dialogSelect* dialogSelect;
AddonToKodiFuncTable_kodi_gui_dialogTextViewer* dialogTextViewer;
AddonToKodiFuncTable_kodi_gui_dialogYesNo* dialogYesNo;
AddonToKodiFuncTable_kodi_gui_listItem* listItem;
AddonToKodiFuncTable_kodi_gui_window* window;
} AddonToKodiFuncTable_kodi_gui;
} /* extern "C" */
//============================================================================
///
/// \ingroup cpp_kodi_gui_CControlRendering_Defs cpp_kodi_gui_CWindow_Defs
/// @{
/// @brief Handle to use as independent pointer for GUI
typedef void* GUIHANDLE;
/// @}
//----------------------------------------------------------------------------