Skocz do zawartości


Zdjęcie

AlphaSkins we wtyczce

alphaskins

  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Draen

Draen

    Bywalec

  • Użytkownik
  • 128 postów

Napisano 2012.11.07, 17:03

Witam,
Mam pytanie dotyczące implementacji AlphaSkins we wtyczce. Jest na to jakiś gotowy sposób, czy muszę ręcznie załadować plik skin.asz, posługując się funkcją AQQ_FUNCTION_GETTHEMEDIR?

Pozdrawiam,
Draen

#2 WiTuŚ

WiTuŚ

    AQQ Maniak

  • Przyjaciel
  • 2028 postów

Napisano 2012.11.07, 17:20

sSkinManager1.Active := True;
sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir)));
sSkinManager1.SkinName := 'Skin';

Gdzie zmienna GetThemeDir, to ścieżka do aktualnie używanej kompozycji wizualnej (i folderu "Skin") pobrana poprzez AQQ_FUNCTION_GETTHEMEDIR
  • Draen lubi to

#3 Draen

Draen

    Bywalec

  • Użytkownik
  • 128 postów

Napisano 2012.11.07, 17:32

Dzięki wielkie za pomoc.

#4 WiTuŚ

WiTuŚ

    AQQ Maniak

  • Przyjaciel
  • 2028 postów

Napisano 2012.11.07, 17:35

Kod z Delphi, a Ty w czym piszesz?

#5 Draen

Draen

    Bywalec

  • Użytkownik
  • 128 postów

Napisano 2012.11.07, 18:14

Delphi. Wyżej nie było ironii, jeżeli o to Ci chodzi :D Po prostu podziękowałem.

#6 WiTuŚ

WiTuŚ

    AQQ Maniak

  • Przyjaciel
  • 2028 postów

Napisano 2012.11.07, 18:27

Przestań - nawet tak nie pomyślałem o żadnej ironii :D spoko :)

#7 Sauler

Sauler

    Bywalec

  • Użytkownik
  • 210 postów

Napisano 2014.05.19, 20:40

Edit: Już sobie poradziłem :) Po prostu źle dodawałem folder skins:

robiłem tak:

sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir+'skin\')));

a powinno być tak:

sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir+'\skin')));

Użytkownik Sauler edytował ten post 2014.05.19, 20:51


#8 Beherit

Beherit

    In Sorte Diaboli

  • Wtyczkopisarz
  • 5031 postów

Napisano 2014.05.19, 20:57

void __fastcall TSettingsForm::FormCreate(TObject *Sender)
{
  //Wlaczona zaawansowana stylizacja okien
  if(ChkSkinEnabled())
  {
	UnicodeString ThemeSkinDir = GetThemeSkinDir();
	//Plik zaawansowanej stylizacji okien istnieje
	if(FileExists(ThemeSkinDir + "\\\\Skin.asz"))
	{
	  //Dane pliku zaawansowanej stylizacji okien
	  ThemeSkinDir = StringReplace(ThemeSkinDir, "\\\\", "\\", TReplaceFlags() << rfReplaceAll);
	  sSkinManager->SkinDirectory = ThemeSkinDir;
	  sSkinManager->SkinName = "Skin.asz";
	  //Ustawianie animacji AlphaControls
	  if(ChkThemeAnimateWindows()) sSkinManager->AnimEffects->FormShow->Time = 200;
	  else sSkinManager->AnimEffects->FormShow->Time = 0;
	  sSkinManager->Effects->AllowGlowing = ChkThemeGlowing();
	  //Zmiana kolorystyki AlphaControls
	  sSkinManager->HueOffset = GetHUE();
	  sSkinManager->Saturation = GetSaturation();
	  //Aktywacja skorkowania AlphaControls
	  sSkinManager->Active = true;
	}
	//Brak pliku zaawansowanej stylizacji okien
	else sSkinManager->Active = false;
  }
  //Zaawansowana stylizacja okien wylaczona
  else sSkinManager->Active = false;
}

oraz

//Pobieranie sciezki do skorki kompozycji
UnicodeString GetThemeSkinDir()
{
  return StringReplace((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_GETTHEMEDIR,0,0), "\\", "\\\\", TReplaceFlags() << rfReplaceAll) + "\\\\Skin";
}

//Sprawdzanie czy  wlaczona jest zaawansowana stylizacja okien
bool ChkSkinEnabled()
{
  TStrings* IniList = new TStringList();
  IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0));
  TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI"));
  Settings->SetStrings(IniList);
  delete IniList;
  UnicodeString SkinsEnabled = Settings->ReadString("Settings","UseSkin","1");
  delete Settings;
  return StrToBool(SkinsEnabled);
}

//Sprawdzanie ustawien animacji AlphaControls
bool ChkThemeAnimateWindows()
{
  TStrings* IniList = new TStringList();
  IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0));
  TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI"));
  Settings->SetStrings(IniList);
  delete IniList;
  UnicodeString AnimateWindowsEnabled = Settings->ReadString("Theme","ThemeAnimateWindows","1");
  delete Settings;
  return StrToBool(AnimateWindowsEnabled);
}
bool ChkThemeGlowing()
{
  TStrings* IniList = new TStringList();
  IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0));
  TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI"));
  Settings->SetStrings(IniList);
  delete IniList;
  UnicodeString GlowingEnabled = Settings->ReadString("Theme","ThemeGlowing","1");
  delete Settings;
  return StrToBool(GlowingEnabled);
}

//Pobieranie ustawien koloru AlphaControls
int GetHUE()
{
  return (int)PluginLink.CallService(AQQ_SYSTEM_COLORGETHUE,0,0);
}
int GetSaturation()
{
  return (int)PluginLink.CallService(AQQ_SYSTEM_COLORGETSATURATION,0,0);
}

Poza tym trzeba też podpiąć się pod notyfikację zmiany kompozycji oraz jej kolorystyki.



#9 Sauler

Sauler

    Bywalec

  • Użytkownik
  • 210 postów

Napisano 2014.05.19, 21:04

Właśnie rozwiązałem ten problem poprzez zaglądnięcie do źródeł Twoich wtyczek. A do zmiany kolorystyki już się podpiąłem, została zmiana kompozycji, lecz to nie problem :)






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych