diff --git a/examples/example1/src/example1.d b/examples/example1/src/example1.d
index 997666f3..fa6b2c8b 100644
--- a/examples/example1/src/example1.d
+++ b/examples/example1/src/example1.d
@@ -316,21 +316,26 @@ extern (C) int UIAppMain(string[] args) {
viewItem.add(langItem);
MenuItem themeItem = new MenuItem(new Action(62, "MENU_VIEW_THEME"));
MenuItem theme1 = (new MenuItem(new Action(621, "MENU_VIEW_THEME_DEFAULT"))).type(MenuItemType.Radio).checked(true);
- MenuItem theme2 = (new MenuItem(new Action(622, "MENU_VIEW_THEME_CUSTOM1"))).type(MenuItemType.Radio);
+ MenuItem theme2 = (new MenuItem(new Action(622, "MENU_VIEW_THEME_DARK"))).type(MenuItemType.Radio);
+ MenuItem theme3 = (new MenuItem(new Action(623, "MENU_VIEW_THEME_CUSTOM1"))).type(MenuItemType.Radio);
auto onThemeChange = delegate (MenuItem item) {
if (!item.checked)
return false;
if (item.id == 621) {
platform.instance.uiTheme = "theme_default";
} else if (item.id == 622) {
+ platform.instance.uiTheme = "theme_dark";
+ } else if (item.id == 623) {
platform.instance.uiTheme = "theme_custom1";
}
return true;
};
theme1.onMenuItemClick = onThemeChange;
theme2.onMenuItemClick = onThemeChange;
+ theme3.onMenuItemClick = onThemeChange;
themeItem.add(theme1);
themeItem.add(theme2);
+ themeItem.add(theme3);
viewItem.add(themeItem);
MenuItem windowItem = new MenuItem(new Action(3, "MENU_WINDOW"c));
@@ -842,7 +847,6 @@ void main()
window.mainWidget = contentLayout;
tabs.selectTab("tab3");
-
} else {
window.mainWidget = (new Button()).text("sample button");
}
diff --git a/examples/example1/views/res/i18n/en.ini b/examples/example1/views/res/i18n/en.ini
index 87cfc368..5016474a 100644
--- a/examples/example1/views/res/i18n/en.ini
+++ b/examples/example1/views/res/i18n/en.ini
@@ -18,8 +18,9 @@ MENU_VIEW_LANGUAGE=Interface &Language
MENU_VIEW_LANGUAGE_EN=English
MENU_VIEW_LANGUAGE_RU=Русский
MENU_VIEW_THEME=&Theme
-MENU_VIEW_THEME_DEFAULT=&Default
-MENU_VIEW_THEME_CUSTOM1=&Custom 1
+MENU_VIEW_THEME_DEFAULT=Default
+MENU_VIEW_THEME_DARK=Dark
+MENU_VIEW_THEME_CUSTOM1=Custom 1
MENU_WINDOW=&Window
MENU_WINDOW_PREFERENCES=&Preferences
MENU_HELP=&Help
diff --git a/examples/example1/views/res/i18n/ru.ini b/examples/example1/views/res/i18n/ru.ini
index 82f24a22..ab52d3d0 100644
--- a/examples/example1/views/res/i18n/ru.ini
+++ b/examples/example1/views/res/i18n/ru.ini
@@ -17,6 +17,7 @@ MENU_VIEW_LANGUAGE_EN=English
MENU_VIEW_LANGUAGE_RU=Русский
MENU_VIEW_THEME=&Тема
MENU_VIEW_THEME_DEFAULT=Стандартная
+MENU_VIEW_THEME_DARK=Тёмная
MENU_VIEW_THEME_CUSTOM1=Пример 1
MENU_WINDOW=&Окно
MENU_WINDOW_PREFERENCES=&Настройки
diff --git a/src/dlangui/platforms/common/platform.d b/src/dlangui/platforms/common/platform.d
index 5c16b962..38449d45 100644
--- a/src/dlangui/platforms/common/platform.d
+++ b/src/dlangui/platforms/common/platform.d
@@ -386,6 +386,8 @@ class Window {
_eventList = new EventList();
_timerQueue = new TimerQueue();
_backgroundColor = 0xFFFFFF;
+ if (currentTheme)
+ _backgroundColor = currentTheme.customColor(STYLE_COLOR_WINDOW_BACKGROUND);
}
~this() {
debug Log.d("Destroying window");
@@ -778,6 +780,10 @@ class Window {
}
if (_tooltip.popup)
_tooltip.popup.onThemeChanged();
+ if (currentTheme) {
+ _backgroundColor = currentTheme.customColor(STYLE_COLOR_WINDOW_BACKGROUND);
+ }
+ invalidate();
}
diff --git a/src/dlangui/widgets/controls.d b/src/dlangui/widgets/controls.d
index 6654fc32..abee249b 100644
--- a/src/dlangui/widgets/controls.d
+++ b/src/dlangui/widgets/controls.d
@@ -305,16 +305,18 @@ class UrlImageTextButton : ImageTextButton {
}
}
+
+
/// checkbox
class CheckBox : ImageTextButton {
this(string ID = null, string textResourceId = null) {
- super(ID, "btn_check", textResourceId);
+ super(ID, getCustomDrawableId("btn_check"), textResourceId);
}
this(string ID, dstring labelText) {
- super(ID, "btn_check", labelText);
+ super(ID, getCustomDrawableId("btn_check"), labelText);
}
this(string ID, UIString label) {
- super(ID, "btn_check", label);
+ super(ID, getCustomDrawableId("btn_check"), label);
}
override protected void init(string drawableId, UIString caption) {
super.init(drawableId, caption);
@@ -330,15 +332,20 @@ class CheckBox : ImageTextButton {
checked = !checked;
return super.handleClick();
}
+ /// handle theme change: e.g. reload some themed resources
+ override void onThemeChanged() {
+ if (currentTheme)
+ _icon.drawableId = getCustomDrawableId("btn_check");
+ }
}
/// radio button
class RadioButton : ImageTextButton {
this(string ID = null, string textResourceId = null) {
- super(ID, "btn_radio", textResourceId);
+ super(ID,getCustomDrawableId("btn_radio"), textResourceId);
}
this(string ID, dstring labelText) {
- super(ID, "btn_radio", labelText);
+ super(ID, getCustomDrawableId("btn_radio"), labelText);
}
override protected void init(string drawableId, UIString caption) {
super.init(drawableId, caption);
@@ -350,6 +357,12 @@ class RadioButton : ImageTextButton {
checkable = true;
}
+ /// handle theme change: e.g. reload some themed resources
+ override void onThemeChanged() {
+ if (currentTheme)
+ _icon.drawableId = getCustomDrawableId("btn_radio");
+ }
+
void uncheckSiblings() {
Widget p = parent;
if (!p)
diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d
index 199d24c1..ad67ca9f 100644
--- a/src/dlangui/widgets/styles.d
+++ b/src/dlangui/widgets/styles.d
@@ -166,6 +166,12 @@ immutable string STYLE_SETTINGS_PAGES = "SETTINGS_PAGES";
/// standard style id for settings dialog page title
immutable string STYLE_SETTINGS_PAGE_TITLE = "SETTINGS_PAGE_TITLE";
+/// window background color resource id
+immutable string STYLE_COLOR_WINDOW_BACKGROUND = "window_background";
+/// dialog background color resource id
+immutable string STYLE_COLOR_DIALOG_BACKGROUND = "dialog_background";
+
+
// Layout size constants
/// layout option, to occupy all available place
immutable int FILL_PARENT = int.max - 1;
@@ -277,6 +283,14 @@ class Style {
protected FontRef _font;
protected DrawableRef _backgroundDrawable;
+ void onThemeChanged() {
+ _backgroundDrawable.clear();
+ foreach(s; _substates)
+ s.onThemeChanged();
+ foreach(s; _children)
+ s.onThemeChanged();
+ }
+
@property const(Theme) theme() const {
if (_theme !is null)
return _theme;
@@ -334,7 +348,7 @@ class Style {
(cast(Style)this)._backgroundDrawable = drawableCache.get(image);
} else {
uint color = backgroundColor;
- (cast(Style)this)._backgroundDrawable = new SolidFillDrawable(color);
+ (cast(Style)this)._backgroundDrawable = isFullyTransparentColor(color) ? new EmptyDrawable() : new SolidFillDrawable(color);
}
return (cast(Style)this)._backgroundDrawable;
}
@@ -1357,6 +1371,11 @@ class DrawableAttribute {
}
}
+/// returns custom drawable replacement id for specified id from current theme, or returns passed value if not found or no current theme
+string getCustomDrawableId(string id) {
+ string res = currentTheme ? currentTheme.customDrawableId(id) : id;
+ return !res ? id : res;
+}
shared static ~this() {
currentTheme = null;
diff --git a/src/dlangui/widgets/widget.d b/src/dlangui/widgets/widget.d
index 1e0b74e5..3c848f1c 100644
--- a/src/dlangui/widgets/widget.d
+++ b/src/dlangui/widgets/widget.d
@@ -247,6 +247,9 @@ class Widget {
// default implementation: call recursive for children
for (int i = 0; i < childCount; i++)
child(i).onThemeChanged();
+ if (_ownStyle) {
+ _ownStyle.onThemeChanged();
+ }
}
/// returns widget id, null if not set
diff --git a/views/res/btn_background_dark.xml b/views/res/btn_background_dark.xml
new file mode 100644
index 00000000..7c86b3e0
--- /dev/null
+++ b/views/res/btn_background_dark.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/btn_background_transparent_dark.xml b/views/res/btn_background_transparent_dark.xml
new file mode 100644
index 00000000..be66fbed
--- /dev/null
+++ b/views/res/btn_background_transparent_dark.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/btn_check_dark.xml b/views/res/btn_check_dark.xml
new file mode 100644
index 00000000..2ce27eda
--- /dev/null
+++ b/views/res/btn_check_dark.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/btn_default_normal_dark.9.png b/views/res/btn_default_normal_dark.9.png
new file mode 100644
index 00000000..70809058
Binary files /dev/null and b/views/res/btn_default_normal_dark.9.png differ
diff --git a/views/res/btn_default_pressed_dark.9.png b/views/res/btn_default_pressed_dark.9.png
new file mode 100644
index 00000000..849cd48e
Binary files /dev/null and b/views/res/btn_default_pressed_dark.9.png differ
diff --git a/views/res/btn_default_selected_dark.9.png b/views/res/btn_default_selected_dark.9.png
new file mode 100644
index 00000000..2be8da67
Binary files /dev/null and b/views/res/btn_default_selected_dark.9.png differ
diff --git a/views/res/btn_default_small_dark.xml b/views/res/btn_default_small_dark.xml
new file mode 100644
index 00000000..304e3ac9
--- /dev/null
+++ b/views/res/btn_default_small_dark.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/btn_default_small_transparent_dark.xml b/views/res/btn_default_small_transparent_dark.xml
new file mode 100644
index 00000000..17527d3f
--- /dev/null
+++ b/views/res/btn_default_small_transparent_dark.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
diff --git a/views/res/btn_radio_background_dark.xml b/views/res/btn_radio_background_dark.xml
new file mode 100644
index 00000000..005b6fc7
--- /dev/null
+++ b/views/res/btn_radio_background_dark.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/views/res/btn_radio_dark.xml b/views/res/btn_radio_dark.xml
new file mode 100644
index 00000000..c196fff1
--- /dev/null
+++ b/views/res/btn_radio_dark.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/combobox_background_dark.xml b/views/res/combobox_background_dark.xml
new file mode 100644
index 00000000..f9bedd80
--- /dev/null
+++ b/views/res/combobox_background_dark.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/editbox_background_dark.xml b/views/res/editbox_background_dark.xml
new file mode 100644
index 00000000..1b19d1e1
--- /dev/null
+++ b/views/res/editbox_background_dark.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/list_item_background_dark.xml b/views/res/list_item_background_dark.xml
new file mode 100644
index 00000000..31b659c2
--- /dev/null
+++ b/views/res/list_item_background_dark.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/list_item_background_solid_dark.xml b/views/res/list_item_background_solid_dark.xml
new file mode 100644
index 00000000..86d565ba
--- /dev/null
+++ b/views/res/list_item_background_solid_dark.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/main_menu_item_background_dark.xml b/views/res/main_menu_item_background_dark.xml
new file mode 100644
index 00000000..005b6fc7
--- /dev/null
+++ b/views/res/main_menu_item_background_dark.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/views/res/main_menu_item_background_hover_dark.9.png b/views/res/main_menu_item_background_hover_dark.9.png
new file mode 100644
index 00000000..b3d29f1d
Binary files /dev/null and b/views/res/main_menu_item_background_hover_dark.9.png differ
diff --git a/views/res/main_menu_item_background_normal_dark.9.png b/views/res/main_menu_item_background_normal_dark.9.png
new file mode 100644
index 00000000..7f5c35ee
Binary files /dev/null and b/views/res/main_menu_item_background_normal_dark.9.png differ
diff --git a/views/res/main_menu_item_background_selected_dark.9.png b/views/res/main_menu_item_background_selected_dark.9.png
new file mode 100644
index 00000000..a8d98997
Binary files /dev/null and b/views/res/main_menu_item_background_selected_dark.9.png differ
diff --git a/views/res/mdpi/arrow_right_down_black_dark.png b/views/res/mdpi/arrow_right_down_black_dark.png
new file mode 100644
index 00000000..e4adc299
Binary files /dev/null and b/views/res/mdpi/arrow_right_down_black_dark.png differ
diff --git a/views/res/mdpi/arrow_right_hollow_dark.png b/views/res/mdpi/arrow_right_hollow_dark.png
new file mode 100644
index 00000000..1a30a312
Binary files /dev/null and b/views/res/mdpi/arrow_right_hollow_dark.png differ
diff --git a/views/res/mdpi/btn_check_off_dark.png b/views/res/mdpi/btn_check_off_dark.png
new file mode 100644
index 00000000..673da468
Binary files /dev/null and b/views/res/mdpi/btn_check_off_dark.png differ
diff --git a/views/res/mdpi/btn_check_off_disabled_dark.png b/views/res/mdpi/btn_check_off_disabled_dark.png
new file mode 100644
index 00000000..c09449a3
Binary files /dev/null and b/views/res/mdpi/btn_check_off_disabled_dark.png differ
diff --git a/views/res/mdpi/btn_check_off_focused_dark.png b/views/res/mdpi/btn_check_off_focused_dark.png
new file mode 100644
index 00000000..88fe7240
Binary files /dev/null and b/views/res/mdpi/btn_check_off_focused_dark.png differ
diff --git a/views/res/mdpi/btn_check_off_pressed.png b/views/res/mdpi/btn_check_off_pressed.png
index 2e64acc2..c71fc57d 100644
Binary files a/views/res/mdpi/btn_check_off_pressed.png and b/views/res/mdpi/btn_check_off_pressed.png differ
diff --git a/views/res/mdpi/btn_check_off_pressed_dark.png b/views/res/mdpi/btn_check_off_pressed_dark.png
new file mode 100644
index 00000000..fa035657
Binary files /dev/null and b/views/res/mdpi/btn_check_off_pressed_dark.png differ
diff --git a/views/res/mdpi/btn_check_on_dark.png b/views/res/mdpi/btn_check_on_dark.png
new file mode 100644
index 00000000..e4f85adf
Binary files /dev/null and b/views/res/mdpi/btn_check_on_dark.png differ
diff --git a/views/res/mdpi/btn_check_on_disabled_dark.png b/views/res/mdpi/btn_check_on_disabled_dark.png
new file mode 100644
index 00000000..368dbfb9
Binary files /dev/null and b/views/res/mdpi/btn_check_on_disabled_dark.png differ
diff --git a/views/res/mdpi/btn_check_on_focused_dark.png b/views/res/mdpi/btn_check_on_focused_dark.png
new file mode 100644
index 00000000..5bb425a4
Binary files /dev/null and b/views/res/mdpi/btn_check_on_focused_dark.png differ
diff --git a/views/res/mdpi/btn_check_on_pressed_dark.png b/views/res/mdpi/btn_check_on_pressed_dark.png
new file mode 100644
index 00000000..c7ba141c
Binary files /dev/null and b/views/res/mdpi/btn_check_on_pressed_dark.png differ
diff --git a/views/res/mdpi/btn_default_dark.9.png b/views/res/mdpi/btn_default_dark.9.png
new file mode 100644
index 00000000..d91cdb6a
Binary files /dev/null and b/views/res/mdpi/btn_default_dark.9.png differ
diff --git a/views/res/mdpi/btn_default_small_normal_dark.9.png b/views/res/mdpi/btn_default_small_normal_dark.9.png
new file mode 100644
index 00000000..0fc79509
Binary files /dev/null and b/views/res/mdpi/btn_default_small_normal_dark.9.png differ
diff --git a/views/res/mdpi/btn_default_small_normal_disable_dark.9.png b/views/res/mdpi/btn_default_small_normal_disable_dark.9.png
new file mode 100644
index 00000000..85149507
Binary files /dev/null and b/views/res/mdpi/btn_default_small_normal_disable_dark.9.png differ
diff --git a/views/res/mdpi/btn_default_small_normal_disable_focused_dark.9.png b/views/res/mdpi/btn_default_small_normal_disable_focused_dark.9.png
new file mode 100644
index 00000000..9a441bed
Binary files /dev/null and b/views/res/mdpi/btn_default_small_normal_disable_focused_dark.9.png differ
diff --git a/views/res/mdpi/btn_default_small_pressed_dark.9.png b/views/res/mdpi/btn_default_small_pressed_dark.9.png
new file mode 100644
index 00000000..88d4de75
Binary files /dev/null and b/views/res/mdpi/btn_default_small_pressed_dark.9.png differ
diff --git a/views/res/mdpi/btn_default_small_selected_dark.9.png b/views/res/mdpi/btn_default_small_selected_dark.9.png
new file mode 100644
index 00000000..72122cca
Binary files /dev/null and b/views/res/mdpi/btn_default_small_selected_dark.9.png differ
diff --git a/views/res/mdpi/btn_disabled_dark.9.png b/views/res/mdpi/btn_disabled_dark.9.png
new file mode 100644
index 00000000..07d28508
Binary files /dev/null and b/views/res/mdpi/btn_disabled_dark.9.png differ
diff --git a/views/res/mdpi/btn_hover_dark.9.png b/views/res/mdpi/btn_hover_dark.9.png
new file mode 100644
index 00000000..0fc630b4
Binary files /dev/null and b/views/res/mdpi/btn_hover_dark.9.png differ
diff --git a/views/res/mdpi/btn_normal_dark.9.png b/views/res/mdpi/btn_normal_dark.9.png
new file mode 100644
index 00000000..1ba7a69b
Binary files /dev/null and b/views/res/mdpi/btn_normal_dark.9.png differ
diff --git a/views/res/mdpi/btn_pressed_dark.9.png b/views/res/mdpi/btn_pressed_dark.9.png
new file mode 100644
index 00000000..ae38921f
Binary files /dev/null and b/views/res/mdpi/btn_pressed_dark.9.png differ
diff --git a/views/res/mdpi/btn_radio_off_dark.png b/views/res/mdpi/btn_radio_off_dark.png
new file mode 100644
index 00000000..85599109
Binary files /dev/null and b/views/res/mdpi/btn_radio_off_dark.png differ
diff --git a/views/res/mdpi/btn_radio_off_disabled_dark.png b/views/res/mdpi/btn_radio_off_disabled_dark.png
new file mode 100644
index 00000000..a0751213
Binary files /dev/null and b/views/res/mdpi/btn_radio_off_disabled_dark.png differ
diff --git a/views/res/mdpi/btn_radio_off_focused_dark.png b/views/res/mdpi/btn_radio_off_focused_dark.png
new file mode 100644
index 00000000..56c9e769
Binary files /dev/null and b/views/res/mdpi/btn_radio_off_focused_dark.png differ
diff --git a/views/res/mdpi/btn_radio_off_pressed_dark.png b/views/res/mdpi/btn_radio_off_pressed_dark.png
new file mode 100644
index 00000000..8b54c2b2
Binary files /dev/null and b/views/res/mdpi/btn_radio_off_pressed_dark.png differ
diff --git a/views/res/mdpi/btn_radio_on_dark.png b/views/res/mdpi/btn_radio_on_dark.png
new file mode 100644
index 00000000..1a1372f1
Binary files /dev/null and b/views/res/mdpi/btn_radio_on_dark.png differ
diff --git a/views/res/mdpi/btn_radio_on_disabled_dark.png b/views/res/mdpi/btn_radio_on_disabled_dark.png
new file mode 100644
index 00000000..9292a17b
Binary files /dev/null and b/views/res/mdpi/btn_radio_on_disabled_dark.png differ
diff --git a/views/res/mdpi/btn_radio_on_focused_dark.png b/views/res/mdpi/btn_radio_on_focused_dark.png
new file mode 100644
index 00000000..4a5ff48a
Binary files /dev/null and b/views/res/mdpi/btn_radio_on_focused_dark.png differ
diff --git a/views/res/mdpi/btn_radio_on_pressed_dark.png b/views/res/mdpi/btn_radio_on_pressed_dark.png
new file mode 100644
index 00000000..cef558e2
Binary files /dev/null and b/views/res/mdpi/btn_radio_on_pressed_dark.png differ
diff --git a/views/res/mdpi/editbox_background_disabled_dark.9.png b/views/res/mdpi/editbox_background_disabled_dark.9.png
new file mode 100644
index 00000000..ff8ed95d
Binary files /dev/null and b/views/res/mdpi/editbox_background_disabled_dark.9.png differ
diff --git a/views/res/mdpi/editbox_background_disabled_focus_dark.9.png b/views/res/mdpi/editbox_background_disabled_focus_dark.9.png
new file mode 100644
index 00000000..ddfc4bb7
Binary files /dev/null and b/views/res/mdpi/editbox_background_disabled_focus_dark.9.png differ
diff --git a/views/res/mdpi/editbox_background_focus_dark.9.png b/views/res/mdpi/editbox_background_focus_dark.9.png
new file mode 100644
index 00000000..30929e17
Binary files /dev/null and b/views/res/mdpi/editbox_background_focus_dark.9.png differ
diff --git a/views/res/mdpi/editbox_background_normal_dark.9.png b/views/res/mdpi/editbox_background_normal_dark.9.png
new file mode 100644
index 00000000..02a21213
Binary files /dev/null and b/views/res/mdpi/editbox_background_normal_dark.9.png differ
diff --git a/views/res/mdpi/popup_window_background_dark.9.png b/views/res/mdpi/popup_window_background_dark.9.png
new file mode 100644
index 00000000..bf3f04b5
Binary files /dev/null and b/views/res/mdpi/popup_window_background_dark.9.png differ
diff --git a/views/res/mdpi/tab_btn_dark_up_focused_dark.9.png b/views/res/mdpi/tab_btn_dark_up_focused_dark.9.png
new file mode 100644
index 00000000..74c57673
Binary files /dev/null and b/views/res/mdpi/tab_btn_dark_up_focused_dark.9.png differ
diff --git a/views/res/mdpi/tab_btn_dark_up_focused_selected_dark.9.png b/views/res/mdpi/tab_btn_dark_up_focused_selected_dark.9.png
new file mode 100644
index 00000000..95057205
Binary files /dev/null and b/views/res/mdpi/tab_btn_dark_up_focused_selected_dark.9.png differ
diff --git a/views/res/mdpi/tab_btn_dark_up_hover_dark.9.png b/views/res/mdpi/tab_btn_dark_up_hover_dark.9.png
new file mode 100644
index 00000000..c4ac1a8b
Binary files /dev/null and b/views/res/mdpi/tab_btn_dark_up_hover_dark.9.png differ
diff --git a/views/res/mdpi/tab_btn_dark_up_normal_dark.9.png b/views/res/mdpi/tab_btn_dark_up_normal_dark.9.png
new file mode 100644
index 00000000..002ed6fc
Binary files /dev/null and b/views/res/mdpi/tab_btn_dark_up_normal_dark.9.png differ
diff --git a/views/res/mdpi/tab_btn_dark_up_selected_dark.9.png b/views/res/mdpi/tab_btn_dark_up_selected_dark.9.png
new file mode 100644
index 00000000..81658702
Binary files /dev/null and b/views/res/mdpi/tab_btn_dark_up_selected_dark.9.png differ
diff --git a/views/res/mdpi/tab_up_background_dark_focused_dark.9.png b/views/res/mdpi/tab_up_background_dark_focused_dark.9.png
new file mode 100644
index 00000000..90c8b6b2
Binary files /dev/null and b/views/res/mdpi/tab_up_background_dark_focused_dark.9.png differ
diff --git a/views/res/mdpi/tab_up_background_dark_normal_dark.9.png b/views/res/mdpi/tab_up_background_dark_normal_dark.9.png
new file mode 100644
index 00000000..30b65db8
Binary files /dev/null and b/views/res/mdpi/tab_up_background_dark_normal_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_background_3d_dark.9.png b/views/res/mdpi/toolbar_background_3d_dark.9.png
new file mode 100644
index 00000000..8b65deb3
Binary files /dev/null and b/views/res/mdpi/toolbar_background_3d_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_background_dark.9.png b/views/res/mdpi/toolbar_background_dark.9.png
new file mode 100644
index 00000000..c348ca45
Binary files /dev/null and b/views/res/mdpi/toolbar_background_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_button_hover_dark.9.png b/views/res/mdpi/toolbar_button_hover_dark.9.png
new file mode 100644
index 00000000..97bdd49e
Binary files /dev/null and b/views/res/mdpi/toolbar_button_hover_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_button_pressed_dark.9.png b/views/res/mdpi/toolbar_button_pressed_dark.9.png
new file mode 100644
index 00000000..6e4bd8b7
Binary files /dev/null and b/views/res/mdpi/toolbar_button_pressed_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_control_disabled_dark.9.png b/views/res/mdpi/toolbar_control_disabled_dark.9.png
new file mode 100644
index 00000000..1ecea1bb
Binary files /dev/null and b/views/res/mdpi/toolbar_control_disabled_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_control_normal_dark.9.png b/views/res/mdpi/toolbar_control_normal_dark.9.png
new file mode 100644
index 00000000..fbfb7acb
Binary files /dev/null and b/views/res/mdpi/toolbar_control_normal_dark.9.png differ
diff --git a/views/res/mdpi/toolbar_separator_dark.png b/views/res/mdpi/toolbar_separator_dark.png
new file mode 100644
index 00000000..cfa5a1ac
Binary files /dev/null and b/views/res/mdpi/toolbar_separator_dark.png differ
diff --git a/views/res/mdpi/tooltip_background_dark.9.png b/views/res/mdpi/tooltip_background_dark.9.png
new file mode 100644
index 00000000..2fa29203
Binary files /dev/null and b/views/res/mdpi/tooltip_background_dark.9.png differ
diff --git a/views/res/menu_item_background_dark.xml b/views/res/menu_item_background_dark.xml
new file mode 100644
index 00000000..31b659c2
--- /dev/null
+++ b/views/res/menu_item_background_dark.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/popup_menu_background_normal_dark.9.png b/views/res/popup_menu_background_normal_dark.9.png
new file mode 100644
index 00000000..3c322655
Binary files /dev/null and b/views/res/popup_menu_background_normal_dark.9.png differ
diff --git a/views/res/tab_btn_dark_up_dark.xml b/views/res/tab_btn_dark_up_dark.xml
new file mode 100644
index 00000000..b00959da
--- /dev/null
+++ b/views/res/tab_btn_dark_up_dark.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
diff --git a/views/res/tab_btn_normal_dark.9.png b/views/res/tab_btn_normal_dark.9.png
new file mode 100644
index 00000000..405bb9f7
Binary files /dev/null and b/views/res/tab_btn_normal_dark.9.png differ
diff --git a/views/res/tab_btn_up_dark.xml b/views/res/tab_btn_up_dark.xml
new file mode 100644
index 00000000..5bd8de08
--- /dev/null
+++ b/views/res/tab_btn_up_dark.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
diff --git a/views/res/tab_btn_up_focused_dark.9.png b/views/res/tab_btn_up_focused_dark.9.png
new file mode 100644
index 00000000..790a08e3
Binary files /dev/null and b/views/res/tab_btn_up_focused_dark.9.png differ
diff --git a/views/res/tab_btn_up_focused_selected_dark.9.png b/views/res/tab_btn_up_focused_selected_dark.9.png
new file mode 100644
index 00000000..f69a9310
Binary files /dev/null and b/views/res/tab_btn_up_focused_selected_dark.9.png differ
diff --git a/views/res/tab_btn_up_hover_dark.9.png b/views/res/tab_btn_up_hover_dark.9.png
new file mode 100644
index 00000000..37ab2216
Binary files /dev/null and b/views/res/tab_btn_up_hover_dark.9.png differ
diff --git a/views/res/tab_btn_up_normal_dark.9.png b/views/res/tab_btn_up_normal_dark.9.png
new file mode 100644
index 00000000..190afc55
Binary files /dev/null and b/views/res/tab_btn_up_normal_dark.9.png differ
diff --git a/views/res/tab_btn_up_selected_dark.9.png b/views/res/tab_btn_up_selected_dark.9.png
new file mode 100644
index 00000000..1b93ed2b
Binary files /dev/null and b/views/res/tab_btn_up_selected_dark.9.png differ
diff --git a/views/res/tab_up_background_focused_dark.9.png b/views/res/tab_up_background_focused_dark.9.png
new file mode 100644
index 00000000..67592d1f
Binary files /dev/null and b/views/res/tab_up_background_focused_dark.9.png differ
diff --git a/views/res/tab_up_background_selected_dark.9.png b/views/res/tab_up_background_selected_dark.9.png
new file mode 100644
index 00000000..09a2f72a
Binary files /dev/null and b/views/res/tab_up_background_selected_dark.9.png differ
diff --git a/views/res/tab_up_background_theme_dark.xml b/views/res/tab_up_background_theme_dark.xml
new file mode 100644
index 00000000..801b3a6a
--- /dev/null
+++ b/views/res/tab_up_background_theme_dark.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/views/res/theme_dark.xml b/views/res/theme_dark.xml
new file mode 100644
index 00000000..1f35dfa2
--- /dev/null
+++ b/views/res/theme_dark.xml
@@ -0,0 +1,412 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/views/res/theme_default.xml b/views/res/theme_default.xml
index c4abad48..8b4f559d 100644
--- a/views/res/theme_default.xml
+++ b/views/res/theme_default.xml
@@ -4,6 +4,8 @@
fontFace="Verdana,Arial,DejaVu Sans"
fontFamily="SansSerif"
>
+
+
+
+
diff --git a/views/res/toolbar_button_background_dark.xml b/views/res/toolbar_button_background_dark.xml
new file mode 100644
index 00000000..f48d7a4d
--- /dev/null
+++ b/views/res/toolbar_button_background_dark.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/views/res/toolbar_control_background_dark.xml b/views/res/toolbar_control_background_dark.xml
new file mode 100644
index 00000000..4b0df5f7
--- /dev/null
+++ b/views/res/toolbar_control_background_dark.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/views/res/transparent_button_background_dark.xml b/views/res/transparent_button_background_dark.xml
new file mode 100644
index 00000000..ca16ff22
--- /dev/null
+++ b/views/res/transparent_button_background_dark.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/views/standard_resources.list b/views/standard_resources.list
index ca3c21f8..d8fdef6c 100644
--- a/views/standard_resources.list
+++ b/views/standard_resources.list
@@ -1,16 +1,28 @@
res/btn_background.xml
+res/btn_background_dark.xml
res/btn_background_transparent.xml
+res/btn_background_transparent_dark.xml
res/btn_check.xml
+res/btn_check_dark.xml
res/btn_default_normal.9.png
+res/btn_default_normal_dark.9.png
res/btn_default_pressed.9.png
+res/btn_default_pressed_dark.9.png
res/btn_default_selected.9.png
+res/btn_default_selected_dark.9.png
res/btn_default_small.xml
+res/btn_default_small_dark.xml
res/btn_default_small_transparent.xml
+res/btn_default_small_transparent_dark.xml
res/btn_radio.xml
+res/btn_radio_dark.xml
res/btn_radio_background.xml
+res/btn_radio_background_dark.xml
res/close.png
res/combobox_background.xml
+res/combobox_background_dark.xml
res/editbox_background.xml
+res/editbox_background_dark.xml
res/exit.png
res/fileclose.png
res/fileopen.png
@@ -18,40 +30,74 @@ res/frame_blue.9.png
res/i18n/std_en.ini
res/i18n/std_ru.ini
res/list_item_background.xml
+res/list_item_background_dark.xml
res/list_item_background_solid.xml
+res/list_item_background_solid_dark.xml
res/main_menu_item_background.xml
+res/main_menu_item_background_dark.xml
res/main_menu_item_background_hover.9.png
+res/main_menu_item_background_hover_dark.9.png
res/main_menu_item_background_normal.9.png
+res/main_menu_item_background_normal_dark.9.png
res/main_menu_item_background_selected.9.png
+res/main_menu_item_background_selected_dark.9.png
res/mdpi/applications-internet.png
res/mdpi/arrow_right_down_black.png
+res/mdpi/arrow_right_down_black_dark.png
res/mdpi/arrow_right_hollow.png
+res/mdpi/arrow_right_hollow_dark.png
res/mdpi/btn_check_off.png
+res/mdpi/btn_check_off_dark.png
res/mdpi/btn_check_off_disabled.png
+res/mdpi/btn_check_off_disabled_dark.png
res/mdpi/btn_check_off_focused.png
+res/mdpi/btn_check_off_focused_dark.png
res/mdpi/btn_check_off_pressed.png
+res/mdpi/btn_check_off_pressed_dark.png
res/mdpi/btn_check_on.png
+res/mdpi/btn_check_on_dark.png
res/mdpi/btn_check_on_disabled.png
+res/mdpi/btn_check_on_disabled_dark.png
res/mdpi/btn_check_on_focused.png
+res/mdpi/btn_check_on_focused_dark.png
res/mdpi/btn_check_on_pressed.png
+res/mdpi/btn_check_on_pressed_dark.png
res/mdpi/btn_default.9.png
+res/mdpi/btn_default_dark.9.png
res/mdpi/btn_default_small_normal.9.png
+res/mdpi/btn_default_small_normal_dark.9.png
res/mdpi/btn_default_small_normal_disable.9.png
+res/mdpi/btn_default_small_normal_disable_dark.9.png
res/mdpi/btn_default_small_normal_disable_focused.9.png
+res/mdpi/btn_default_small_normal_disable_focused_dark.9.png
res/mdpi/btn_default_small_pressed.9.png
+res/mdpi/btn_default_small_pressed_dark.9.png
res/mdpi/btn_default_small_selected.9.png
+res/mdpi/btn_default_small_selected_dark.9.png
res/mdpi/btn_disabled.9.png
+res/mdpi/btn_disabled_dark.9.png
res/mdpi/btn_hover.9.png
+res/mdpi/btn_hover_dark.9.png
res/mdpi/btn_normal.9.png
+res/mdpi/btn_normal_dark.9.png
res/mdpi/btn_pressed.9.png
+res/mdpi/btn_pressed_dark.9.png
res/mdpi/btn_radio_off.png
+res/mdpi/btn_radio_off_dark.png
res/mdpi/btn_radio_off_disabled.png
+res/mdpi/btn_radio_off_disabled_dark.png
res/mdpi/btn_radio_off_focused.png
+res/mdpi/btn_radio_off_focused_dark.png
res/mdpi/btn_radio_off_pressed.png
+res/mdpi/btn_radio_off_pressed_dark.png
res/mdpi/btn_radio_on.png
+res/mdpi/btn_radio_on_dark.png
res/mdpi/btn_radio_on_disabled.png
+res/mdpi/btn_radio_on_disabled_dark.png
res/mdpi/btn_radio_on_focused.png
+res/mdpi/btn_radio_on_focused_dark.png
res/mdpi/btn_radio_on_pressed.png
+res/mdpi/btn_radio_on_pressed_dark.png
res/mdpi/computer.png
res/mdpi/dialog-cancel.png
res/mdpi/dialog-close.png
@@ -62,33 +108,54 @@ res/mdpi/drive-harddisk.png
res/mdpi/drive-optical.png
res/mdpi/drive-removable-media.png
res/mdpi/editbox_background_disabled.9.png
+res/mdpi/editbox_background_disabled_dark.9.png
res/mdpi/editbox_background_disabled_focus.9.png
+res/mdpi/editbox_background_disabled_focus_dark.9.png
res/mdpi/editbox_background_focus.9.png
+res/mdpi/editbox_background_focus_dark.9.png
res/mdpi/editbox_background_normal.9.png
+res/mdpi/editbox_background_normal_dark.9.png
res/mdpi/folder-blue.png
res/mdpi/folder-bookmark.png
res/mdpi/folder-network.png
res/mdpi/folder.png
res/mdpi/media-flash-sd-mmc.png
res/mdpi/popup_window_background.9.png
+res/mdpi/popup_window_background_dark.9.png
res/mdpi/tab_btn_dark_up_focused.9.png
+res/mdpi/tab_btn_dark_up_focused_dark.9.png
res/mdpi/tab_btn_dark_up_focused_selected.9.png
+res/mdpi/tab_btn_dark_up_focused_selected_dark.9.png
res/mdpi/tab_btn_dark_up_hover.9.png
+res/mdpi/tab_btn_dark_up_hover_dark.9.png
res/mdpi/tab_btn_dark_up_normal.9.png
+res/mdpi/tab_btn_dark_up_normal_dark.9.png
res/mdpi/tab_btn_dark_up_selected.9.png
+res/mdpi/tab_btn_dark_up_selected_dark.9.png
res/mdpi/tab_up_background_dark_focused.9.png
+res/mdpi/tab_up_background_dark_focused_dark.9.png
res/mdpi/tab_up_background_dark_normal.9.png
+res/mdpi/tab_up_background_dark_normal_dark.9.png
res/mdpi/text-plain.png
res/mdpi/toolbar_background.9.png
+res/mdpi/toolbar_background_dark.9.png
res/mdpi/toolbar_button_hover.9.png
+res/mdpi/toolbar_button_hover_dark.9.png
res/mdpi/toolbar_button_pressed.9.png
+res/mdpi/toolbar_button_pressed_dark.9.png
res/mdpi/toolbar_control_disabled.9.png
+res/mdpi/toolbar_control_disabled_dark.9.png
res/mdpi/toolbar_control_normal.9.png
+res/mdpi/toolbar_control_normal_dark.9.png
res/mdpi/toolbar_separator.png
+res/mdpi/toolbar_separator_dark.png
res/mdpi/tooltip_background.9.png
+res/mdpi/tooltip_background_dark.9.png
res/mdpi/user-home.png
res/menu_item_background.xml
+res/menu_item_background_dark.xml
res/popup_menu_background_normal.9.png
+res/popup_menu_background_normal_dark.9.png
res/scrollbar_btn_down.png
res/scrollbar_btn_left.png
res/scrollbar_btn_right.png
@@ -96,19 +163,33 @@ res/scrollbar_btn_up.png
res/scrollbar_indicator_horizontal.png
res/scrollbar_indicator_vertical.png
res/tab_btn_dark_up.xml
+res/tab_btn_dark_up_dark.xml
res/tab_btn_normal.9.png
+res/tab_btn_normal_dark.9.png
res/tab_btn_up.xml
+res/tab_btn_up_dark.xml
res/tab_btn_up_focused.9.png
+res/tab_btn_up_focused_dark.9.png
res/tab_btn_up_focused_selected.9.png
+res/tab_btn_up_focused_selected_dark.9.png
res/tab_btn_up_hover.9.png
+res/tab_btn_up_hover_dark.9.png
res/tab_btn_up_normal.9.png
+res/tab_btn_up_normal_dark.9.png
res/tab_btn_up_selected.9.png
+res/tab_btn_up_selected_dark.9.png
res/tab_more.png
res/tab_up_background.9.png
res/tab_up_background_dark.xml
res/tab_up_background_focused.9.png
+res/tab_up_background_focused_dark.9.png
res/tab_up_background_selected.9.png
+res/tab_up_background_selected_dark.9.png
res/theme_default.xml
+res/theme_dark.xml
res/toolbar_button_background.xml
+res/toolbar_button_background_dark.xml
res/toolbar_control_background.xml
+res/toolbar_control_background_dark.xml
res/transparent_button_background.xml
+res/transparent_button_background_dark.xml