1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#![allow(dead_code)]

//! This file contains the definitions of plugin_definitions.h

use std::os::raw::*;

pub const MENU_BUFSZ:   usize = 128;
pub const HOTKEY_BUFSZ: usize = 128;

/// Return values for offersConfigure
#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ConfigureOffer {
	/// Plugin does not implement ts3plugin_configure
	No = 0,
	/// Plugin does implement ts3plugin_configure and requests to run this function in an own thread
	NewThread,
	/// Plugin does implement ts3plugin_configure and requests to run this function in the Qt GUI thread
	QtThread,
}

#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum MessageTarget {
	Server = 0,
	Channel,
}

#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ItemType {
	Server = 0,
	Channel,
	Client,
}

#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum MenuType {
	Global = 0,
	Channel,
	Client,
}

#[repr(C)]
pub struct MenuItem {
	pub type_name: MenuType,
	pub id:        c_uint,
	pub text:      [c_char; MENU_BUFSZ],
	pub icon:      [c_char; MENU_BUFSZ],
}

#[repr(C)]
pub struct Hotkey {
	pub keyword:     [c_char; HOTKEY_BUFSZ],
	pub description: [c_char; HOTKEY_BUFSZ],
}

#[repr(C)]
pub struct BookmarkItem {
	pub name:        *mut c_char,
	pub is_folder:   u8,
	pub reserved:    [u8; 3],
	/// Is either "char *uuid" or "BookmarkList *folder"
	pub uuid_folder: *mut c_char,
}

impl BookmarkItem {
	fn get_uuid(&self) -> *mut c_char {
		self.uuid_folder
	}

	fn get_folder(&self) -> *mut BookmarkList {
		self.uuid_folder as *mut BookmarkList
	}

	fn set_uuid(&mut self, val: *mut c_char) {
		self.uuid_folder = val;
	}

	fn set_folder(&mut self, val: *mut BookmarkList) {
		self.uuid_folder = val as *mut c_char;
	}
}

#[repr(C)]
pub struct BookmarkList {
	pub itemcount: c_int,
	/// Should be 0 but compiler complains (the C compiler, not the rust compiler)
	pub items:     [BookmarkItem; 1],
}

#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum GuiProfile {
	SoundCapture = 0,
	SoundPlayback,
	Hotkey,
	Soundpack,
	Identity,
}

#[repr(C)]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ConnectTab {
	New = 0,
	Current,
	NewIfCurrentConnected,
}