mirror of
https://gitlab.com/Nanolx/homebrewfilter.git
synced 2025-02-21 11:37:10 +01:00
1240 lines
38 KiB
C++
1240 lines
38 KiB
C++
|
|
#include <unistd.h>
|
|
#include <algorithm>
|
|
|
|
#include "libwiigui/gui.h"
|
|
#include "main.h"
|
|
#include "menu.h"
|
|
#include "menus_command.h"
|
|
#include "Prompts/prompts.h"
|
|
#include "Tools/copy_app_in_category.h"
|
|
#include "Tools/sort.h"
|
|
#include "Network/network.h"
|
|
#include "Network/update.h"
|
|
#include "Network/tcp.h"
|
|
|
|
/*** Extern variables ***/
|
|
extern GuiWindow * mainWindow;
|
|
extern bool boothomebrew;
|
|
extern bool boot_buffer;
|
|
extern struct s_move move;
|
|
extern GuiImageData * pointer;
|
|
|
|
/*** Extern functions ***/
|
|
extern void ResumeGui();
|
|
extern void HaltGui();
|
|
extern void HaltResumeGui();
|
|
|
|
bool grab = false;
|
|
// slide temporär aktivieren
|
|
bool temp_slide = true;
|
|
|
|
/****************************************************************************
|
|
* MenuSettings
|
|
***************************************************************************/
|
|
int MenuMain()
|
|
{
|
|
int menu = MENU_NONE;
|
|
string button;
|
|
bool networkswitch = true;
|
|
int networtwaittime = 0;
|
|
Settings.total_page = 1;
|
|
bool vor = false;
|
|
|
|
int app_pos = -1;
|
|
int apps_row = 1;
|
|
int apps_numers = Options.apps;
|
|
int gesamt_apps;
|
|
|
|
const u8* temp_apps_btn = NULL;
|
|
const u8* temp_apps_btnOver = NULL;
|
|
const u8* temp_normal_grid_inactive = NULL;
|
|
const u8* temp_normal_grid_active = NULL;
|
|
const u8* temp_sd_usb_active = NULL;
|
|
const u8* temp_sd_usb_inactive = NULL;
|
|
const u8* temp_wii_gc_active = NULL;
|
|
const u8* temp_wii_gc_inactive = NULL;
|
|
|
|
GuiTrigger trigA;
|
|
GuiTrigger trigB;
|
|
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
|
trigB.SetSimpleTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
|
|
|
|
/************************************************************************
|
|
* Kategorien pro auswahl
|
|
***********************************************************************/
|
|
if(Settings.unassigned)
|
|
{
|
|
vechomebrew_list_choice = vechomebrew_list_unassigned;
|
|
// Kategoriename
|
|
Settings.category_name = tr(Settings.category_name_all);
|
|
Settings.category_name += " - ";
|
|
Settings.category_name += tr("unassigned");
|
|
}
|
|
else if(Settings.view == 2)
|
|
{
|
|
// vechomebrew_list_choice = vechomebrew_list_pc;
|
|
}
|
|
else
|
|
{
|
|
// Kategorie Alle nur anzeigen, wenn aktiviert oder keine andere vorhanden ist
|
|
if(!Options.show_all && Settings.current_category == 0 && AvailableCategory.categories.size() -1 > 0)
|
|
Settings.current_category++;
|
|
|
|
vechomebrew_list_choice = vechomebrew_list_category[Settings.current_category];
|
|
// Kategoriename
|
|
Settings.category_name = AvailableCategory.categories[Settings.current_category];
|
|
}
|
|
gesamt_apps = vechomebrew_list_choice.size();
|
|
|
|
|
|
// Kategorie button unt text
|
|
GuiText categoryTxt(Settings.category_name.c_str(), 28, (GXColor){Theme.category_1, Theme.category_2, Theme.category_3, 255});
|
|
categoryTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
categoryTxt.SetPosition(0,30);
|
|
|
|
GuiButton categoryBtn(categoryTxt.GetTextWidth(), 28);
|
|
categoryBtn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
categoryBtn.SetPosition(0, 30);
|
|
categoryBtn.SetTrigger(&trigA);
|
|
categoryBtn.SetTrigger(&trigB);
|
|
|
|
// HBF und Inhaber
|
|
GuiImageData LogoHomebrewFilterImgData(LogoHomebrewFilter_png);
|
|
GuiImage LogoHomebrewFilterImg(&LogoHomebrewFilterImgData);
|
|
LogoHomebrewFilterImg.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
LogoHomebrewFilterImg.SetPosition(30, 420);
|
|
LogoHomebrewFilterImg.SetScale(0.65);
|
|
|
|
GuiText ownerTxt("hamachi-mp", 18, (GXColor){Theme.owner_1, Theme.owner_2, Theme.owner_3, 255});
|
|
ownerTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
|
ownerTxt.SetPosition(-35,430);
|
|
|
|
/************************************************************************
|
|
* icons zuweisen
|
|
***********************************************************************/
|
|
|
|
// normal, grid und pc ansicht
|
|
if(Settings.view == 0)
|
|
{
|
|
temp_apps_btn = Theme.apps_list;
|
|
temp_apps_btnOver = Theme.apps_list_hover;
|
|
|
|
// symbol für normale ansicht
|
|
temp_normal_grid_inactive = Theme.normal_inactive;
|
|
temp_normal_grid_active = Theme.normal_active;
|
|
}
|
|
else if(Settings.view == 1)
|
|
{
|
|
temp_apps_btn = Theme.apps_grid;
|
|
temp_apps_btnOver = Theme.apps_grid_hover;
|
|
|
|
// symbol für grid ansicht
|
|
temp_normal_grid_inactive = Theme.grid_inactive;
|
|
temp_normal_grid_active = Theme.grid_active;
|
|
|
|
apps_row = 3;
|
|
apps_numers = Options.apps * apps_row;
|
|
}
|
|
else if(Settings.view == 2)
|
|
{
|
|
temp_apps_btn = Theme.apps_grid;
|
|
temp_apps_btnOver = Theme.apps_grid_hover;
|
|
|
|
// symbol für pc ansicht
|
|
temp_normal_grid_inactive = Theme.grid_inactive;
|
|
temp_normal_grid_active = Theme.grid_active;
|
|
|
|
apps_row = 5;
|
|
apps_numers = 8 * apps_row;
|
|
// gesamt_apps = apps_numers;
|
|
|
|
LogoHomebrewFilterImg.SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
|
|
LogoHomebrewFilterImg.SetPosition(45, -15);
|
|
|
|
ownerTxt.SetAlignment(ALIGN_RIGHT, ALIGN_BOTTOM);
|
|
ownerTxt.SetPosition(-35, -20);
|
|
}
|
|
|
|
// sd / usb ansicht
|
|
if(Settings.device == "sd1")
|
|
{
|
|
temp_sd_usb_active = Theme.sd_active;
|
|
temp_sd_usb_inactive = Theme.sd_inactive;
|
|
}
|
|
else if(Settings.device == "usb1")
|
|
{
|
|
temp_sd_usb_active = Theme.usb_active;
|
|
temp_sd_usb_inactive = Theme.usb_inactive;
|
|
}
|
|
else if(Settings.device == "sd_usb")
|
|
{
|
|
temp_sd_usb_active = Theme.sd_usb_active;
|
|
temp_sd_usb_inactive = Theme.sd_usb_inactive;
|
|
}
|
|
|
|
// wii / gc ansicht
|
|
if(Settings.system == 1)
|
|
{
|
|
temp_wii_gc_active = Theme.wii_active;
|
|
temp_wii_gc_inactive = Theme.wii_inactive;
|
|
}
|
|
else if(Settings.system == 0)
|
|
{
|
|
temp_wii_gc_active = Theme.gc_active;
|
|
temp_wii_gc_inactive = Theme.gc_inactive;
|
|
}
|
|
else if(Settings.system == 2)
|
|
{
|
|
temp_wii_gc_active = Theme.wii_gc_active;
|
|
temp_wii_gc_inactive = Theme.wii_gc_inactive;
|
|
}
|
|
|
|
/************************************************************************
|
|
* bilder und buttons
|
|
***********************************************************************/
|
|
|
|
// image data
|
|
GuiImageData apps_next(Theme.apps_next);
|
|
GuiImageData apps_next_hover(Theme.apps_next_hover);
|
|
GuiImageData apps_previous(Theme.apps_previous);
|
|
GuiImageData apps_previous_hover(Theme.apps_previous_hover);
|
|
GuiImageData apps_plus(Theme.apps_plus);
|
|
GuiImageData apps_plus_hover(Theme.apps_plus_hover);
|
|
GuiImageData apps_minus(Theme.apps_minus);
|
|
GuiImageData apps_minus_hover(Theme.apps_minus_hover);
|
|
GuiImageData btnOutline(Theme.button_small);
|
|
GuiImageData btnOutlineOver(Theme.button_small_focus);
|
|
GuiImageData apps_btn(temp_apps_btn);
|
|
GuiImageData apps_btnOver(temp_apps_btnOver);
|
|
GuiImageData sd_usb_BtnImgData(temp_sd_usb_inactive);
|
|
GuiImageData sd_usb_BtnImgDataOver(temp_sd_usb_active);
|
|
GuiImageData wii_gc_BtnImgData(temp_wii_gc_inactive);
|
|
GuiImageData wii_gc_BtnImgDataOver(temp_wii_gc_active);
|
|
GuiImageData power_BtnImgData(Theme.power_inactive);
|
|
GuiImageData power_BtnImgDataOver(Theme.power_active);
|
|
GuiImageData settings_BtnImgData(Theme.settings_inactive);
|
|
GuiImageData settings_BtnImgDataOver(Theme.settings_active);
|
|
GuiImageData normal_grid_BtnImgData(temp_normal_grid_inactive);
|
|
GuiImageData normal_grid_BtnImgDataOver(temp_normal_grid_active);
|
|
GuiImageData network_BtnImgData(Theme.network_inactive);
|
|
GuiImageData network_BtnImgDataOver(Theme.network_active);
|
|
GuiImageData start_BtnImgData(Theme.button_tiny);
|
|
GuiImageData start_BtnImgDataOver(Theme.button_tiny_focus);
|
|
GuiImageData bar_ImgData(Theme.bar);
|
|
GuiImageData desktop_ImgData(Theme.desktop);
|
|
|
|
// image
|
|
GuiImage rightBtnImg(&apps_next);
|
|
GuiImage leftBtnImg(&apps_previous);
|
|
GuiImage plusBtnImg(&apps_plus);
|
|
GuiImage minusBtnImg(&apps_minus);
|
|
GuiImage settingBtnImg(&btnOutline);
|
|
GuiImage sd_usb_BtnImg(&sd_usb_BtnImgData);
|
|
GuiImage wii_gc_BtnImg(&wii_gc_BtnImgData);
|
|
GuiImage power_BtnImg(&power_BtnImgData);
|
|
GuiImage settings_BtnImg(&settings_BtnImgData);
|
|
GuiImage normal_grid_BtnImg(&normal_grid_BtnImgData);
|
|
GuiImage network_BtnImg(&network_BtnImgData);
|
|
GuiImage start_BtnImg(&start_BtnImgData);
|
|
GuiImage bar_Img(&bar_ImgData);
|
|
GuiImage desktop_Img(&desktop_ImgData);
|
|
GuiImage * appsBtnImg[gesamt_apps];
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
appsBtnImg[i] = new GuiImage(&apps_btn);
|
|
|
|
// image over
|
|
GuiImage rightBtnImgOver(&apps_next_hover);
|
|
GuiImage leftBtnImgOver(&apps_previous_hover);
|
|
GuiImage plusBtnImgOver(&apps_plus_hover);
|
|
GuiImage minusBtnImgOver(&apps_minus_hover);
|
|
GuiImage settingBtnImgOver(&btnOutlineOver);
|
|
GuiImage sd_usb_BtnImgOver(&sd_usb_BtnImgDataOver);
|
|
GuiImage wii_gc_BtnImgOver(&wii_gc_BtnImgDataOver);
|
|
GuiImage power_BtnImgOver(&power_BtnImgDataOver);
|
|
GuiImage settings_BtnImgOver(&settings_BtnImgDataOver);
|
|
GuiImage normal_grid_BtnImgOver(&normal_grid_BtnImgDataOver);
|
|
GuiImage network_BtnImgOver(&network_BtnImgDataOver);
|
|
GuiImage start_BtnImgOver(&start_BtnImgData);
|
|
GuiImage * appsBtnImgOver[gesamt_apps];
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
appsBtnImgOver[i] = new GuiImage(&apps_btnOver);
|
|
|
|
/************************************************************************
|
|
* Buttons für seite und kategorie
|
|
***********************************************************************/
|
|
GuiButton rightBtn(apps_next.GetWidth(), apps_next.GetHeight());
|
|
rightBtn.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
|
rightBtn.SetPosition(-30, 175);
|
|
if(Options.apps == 5)
|
|
rightBtn.SetPosition(-30, 180);
|
|
rightBtn.SetImage(&rightBtnImg);
|
|
rightBtn.SetImageOver(&rightBtnImgOver);
|
|
rightBtn.SetTrigger(&trigA);
|
|
rightBtn.SetEffectGrow();
|
|
|
|
GuiButton leftBtn(apps_previous.GetWidth(), apps_previous.GetHeight());
|
|
leftBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
leftBtn.SetPosition(30, 175);
|
|
if(Options.apps == 5)
|
|
leftBtn.SetPosition(30, 180);
|
|
leftBtn.SetImage(&leftBtnImg);
|
|
leftBtn.SetImageOver(&leftBtnImgOver);
|
|
leftBtn.SetTrigger(&trigA);
|
|
leftBtn.SetEffectGrow();
|
|
|
|
GuiButton plusBtn(apps_plus.GetWidth(), apps_plus.GetHeight());
|
|
plusBtn.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
|
plusBtn.SetPosition(-54, 20);
|
|
plusBtn.SetImage(&plusBtnImg);
|
|
plusBtn.SetImageOver(&plusBtnImgOver);
|
|
plusBtn.SetTrigger(&trigA);
|
|
plusBtn.SetEffectGrow();
|
|
|
|
GuiButton minusBtn(apps_minus.GetWidth(), apps_minus.GetHeight());
|
|
minusBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
minusBtn.SetPosition(54, 20);
|
|
minusBtn.SetImage(&minusBtnImg);
|
|
minusBtn.SetImageOver(&minusBtnImgOver);
|
|
minusBtn.SetTrigger(&trigA);
|
|
minusBtn.SetEffectGrow();
|
|
|
|
// sd / usb
|
|
GuiButton sd_usb_Btn(sd_usb_BtnImgData.GetWidth(), sd_usb_BtnImgData.GetHeight());
|
|
sd_usb_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
sd_usb_Btn.SetPosition(-135, 355);
|
|
if(Options.apps == 5)
|
|
sd_usb_Btn.SetPosition(-135, 375);
|
|
sd_usb_Btn.SetImage(&sd_usb_BtnImg);
|
|
sd_usb_Btn.SetImageOver(&sd_usb_BtnImgOver);
|
|
sd_usb_Btn.SetTrigger(&trigA);
|
|
sd_usb_Btn.SetEffectGrow();
|
|
|
|
// wii / gc
|
|
GuiButton wii_gc_Btn(wii_gc_BtnImgData.GetWidth(), wii_gc_BtnImgData.GetHeight());
|
|
wii_gc_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
wii_gc_Btn.SetPosition(-185, 355);
|
|
if(Options.apps == 5)
|
|
wii_gc_Btn.SetPosition(-185, 375);
|
|
wii_gc_Btn.SetImage(&wii_gc_BtnImg);
|
|
wii_gc_Btn.SetImageOver(&wii_gc_BtnImgOver);
|
|
wii_gc_Btn.SetTrigger(&trigA);
|
|
wii_gc_Btn.SetEffectGrow();
|
|
|
|
// normal / grid ansicht
|
|
GuiButton normal_grid_Btn(normal_grid_BtnImgData.GetWidth(), normal_grid_BtnImgData.GetHeight());
|
|
normal_grid_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
normal_grid_Btn.SetPosition(0, 355);
|
|
if(Options.apps == 5)
|
|
normal_grid_Btn.SetPosition(0, 375);
|
|
normal_grid_Btn.SetImage(&normal_grid_BtnImg);
|
|
normal_grid_Btn.SetImageOver(&normal_grid_BtnImgOver);
|
|
normal_grid_Btn.SetTrigger(&trigA);
|
|
normal_grid_Btn.SetEffectGrow();
|
|
|
|
// settings
|
|
GuiButton settings_Btn(settings_BtnImgData.GetWidth(), settings_BtnImgData.GetHeight());
|
|
settings_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
settings_Btn.SetPosition(135, 355);
|
|
if(Options.apps == 5)
|
|
settings_Btn.SetPosition(135, 375);
|
|
settings_Btn.SetImage(&settings_BtnImg);
|
|
settings_Btn.SetImageOver(&settings_BtnImgOver);
|
|
settings_Btn.SetTrigger(&trigA);
|
|
settings_Btn.SetEffectGrow();
|
|
|
|
// power
|
|
GuiButton power_Btn(power_BtnImgData.GetWidth(), power_BtnImgData.GetHeight());
|
|
power_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
power_Btn.SetPosition(185, 355);
|
|
if(Options.apps == 5)
|
|
power_Btn.SetPosition(185, 375);
|
|
power_Btn.SetImage(&power_BtnImg);
|
|
power_Btn.SetImageOver(&power_BtnImgOver);
|
|
power_Btn.SetTrigger(&trigA);
|
|
power_Btn.SetEffectGrow();
|
|
|
|
// network ansicht
|
|
GuiButton network_Btn(network_BtnImgData.GetWidth(), network_BtnImgData.GetHeight());
|
|
network_Btn.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
|
network_Btn.SetPosition(-50, 362);
|
|
if(Options.apps == 5)
|
|
network_Btn.SetPosition(-50, 382);
|
|
if(IsNetworkInit())
|
|
network_Btn.SetImage(&network_BtnImgOver);
|
|
else
|
|
network_Btn.SetImage(&network_BtnImg);
|
|
network_Btn.SetImageOver(&network_BtnImgOver);
|
|
network_Btn.SetTrigger(&trigA);
|
|
network_Btn.SetEffectGrow();
|
|
|
|
// pc ansicht
|
|
GuiButton start_Btn(start_BtnImgData.GetWidth(), start_BtnImgData.GetHeight());
|
|
start_Btn.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
|
start_Btn.SetPosition(6, -6);
|
|
start_Btn.SetImage(&start_BtnImg);
|
|
start_Btn.SetImageOver(&start_BtnImgOver);
|
|
start_Btn.SetTrigger(&trigA);
|
|
start_Btn.SetEffectGrow();
|
|
// start_Btn.SetScale(0.75);
|
|
bar_Img.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
|
// desktop_Img.SetAlignment(ALIGN_LEFT, ALIGN_BOTTOM);
|
|
|
|
// alle button der kategorie erstellen
|
|
GuiButton * AppsBtn[gesamt_apps];
|
|
|
|
// Seite der zuletzt gestarteten app
|
|
if(Settings.last_app_pos != -1)
|
|
{
|
|
Settings.current_page = Settings.last_app_pos/apps_numers +1;
|
|
app_pos = Settings.last_app_pos;
|
|
Settings.last_app_pos = -1;
|
|
}
|
|
|
|
// start position der apps buttons
|
|
int x = screenwidth / 2 - (apps_btn.GetWidth() * apps_row) / 2;
|
|
int y = 70;
|
|
if(Options.apps == 5)
|
|
y = 55;
|
|
if(Settings.view == 2)
|
|
{
|
|
x = screenwidth / 2 - (apps_btn.GetWidth() * apps_row) / 2 +50;
|
|
y = 4;
|
|
}
|
|
|
|
int app_grid = 0;
|
|
|
|
// position der apps fürs verschieben speichern
|
|
vector<int> pos_x;
|
|
vector<int> pos_y;
|
|
|
|
// auflisten der apps
|
|
int anzahl_pro_seite = 0;
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
{
|
|
AppsBtn[i] = new GuiButton(apps_btn.GetWidth(), apps_btn.GetHeight());
|
|
|
|
if(anzahl_pro_seite == apps_numers) // Apps pro Seite
|
|
{
|
|
y = 70;
|
|
if(Options.apps == 5)
|
|
y = 55;
|
|
anzahl_pro_seite = 1;
|
|
Settings.total_page++;
|
|
}
|
|
else
|
|
anzahl_pro_seite++;
|
|
|
|
// device symbol anzeigen
|
|
GuiImage * viewdevice = NULL;
|
|
|
|
if((Options.device_icon == 1 || Options.device_icon == 3) && Settings.device == "sd_usb" && Settings.view != 2)
|
|
{
|
|
bool icon = false;
|
|
if(strncmp(vechomebrew_list_choice[i].foldername.c_str(), "sd", 2) == 0)
|
|
{
|
|
viewdevice = new GuiImage(new GuiImageData(Theme.sd_inactive));
|
|
icon = true;
|
|
}
|
|
else if(strncmp(vechomebrew_list_choice[i].foldername.c_str(), "usb", 3) == 0)
|
|
{
|
|
viewdevice = new GuiImage(new GuiImageData(Theme.usb_inactive));
|
|
icon = true;
|
|
}
|
|
|
|
if(icon)
|
|
{
|
|
viewdevice->SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
|
|
viewdevice->SetPosition(15, -10);
|
|
viewdevice->SetScale(0.75);
|
|
}
|
|
}
|
|
|
|
GuiImage * viewicon = new GuiImage(new GuiImageData(vechomebrew_list_choice[i].icon));
|
|
GuiText * AppsBtnTxt1 = NULL;
|
|
GuiText * AppsBtnTxt2 = NULL;
|
|
GuiText * AppsBtnTxt3 = NULL;
|
|
|
|
// Normale Ansicht
|
|
if(Settings.view == 0)
|
|
{
|
|
AppsBtnTxt1 = new GuiText(vechomebrew_list_choice[i].name.c_str(), 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
AppsBtnTxt2 = new GuiText("....................................................", 24, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 100});
|
|
AppsBtnTxt3 = new GuiText(tr(vechomebrew_list_choice[i].info.c_str()), 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
|
|
viewicon->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
|
viewicon->SetPosition(10, 0);
|
|
AppsBtnTxt1->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxt2->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxt3->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxt1->SetPosition(160, 10);
|
|
AppsBtnTxt1->SetMaxWidth(265, DOTTED);
|
|
AppsBtnTxt2->SetPosition(160, 17);
|
|
AppsBtnTxt2->SetMaxWidth(260, DOTTED);
|
|
AppsBtnTxt3->SetPosition(160, 40);
|
|
AppsBtnTxt3->SetMaxWidth(265, DOTTED);
|
|
}
|
|
|
|
// Grid Ansicht
|
|
else if(Settings.view == 1)
|
|
{
|
|
if(vechomebrew_list_choice[i].icon == NULL)
|
|
{
|
|
AppsBtnTxt1 = new GuiText(vechomebrew_list_choice[i].name.c_str(), 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
AppsBtnTxt1->SetMaxWidth(100, SCROLL_HORIZONTAL);
|
|
}
|
|
viewicon->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
|
}
|
|
|
|
// PC Ansicht
|
|
else if(Settings.view == 2)
|
|
{
|
|
if(vechomebrew_list_choice[i].icon == NULL)
|
|
{
|
|
AppsBtnTxt1 = new GuiText(vechomebrew_list_choice[i].name.c_str(), 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
AppsBtnTxt1->SetMaxWidth(75, SCROLL_HORIZONTAL);
|
|
}
|
|
viewicon->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
|
AppsBtn[i]->SetScale(0.75);
|
|
}
|
|
|
|
AppsBtn[i]->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtn[i]->SetPosition(x, y);
|
|
AppsBtn[i]->SetLabel(AppsBtnTxt1, 0);
|
|
AppsBtn[i]->SetLabel(AppsBtnTxt2, 1);
|
|
AppsBtn[i]->SetLabel(AppsBtnTxt3, 2);
|
|
AppsBtn[i]->SetImage(appsBtnImg[i]);
|
|
AppsBtn[i]->SetImageOver(appsBtnImgOver[i]);
|
|
AppsBtn[i]->SetTrigger(&trigA);
|
|
AppsBtn[i]->SetTrigger(&trigB);
|
|
AppsBtn[i]->SetIcon(viewicon, 0);
|
|
AppsBtn[i]->SetIcon(viewdevice, 1);
|
|
if(i >= apps_numers)
|
|
{
|
|
AppsBtn[i]->SetVisible(false);
|
|
AppsBtn[i]->SetSelectable(false);
|
|
}
|
|
|
|
pos_x.push_back(x);
|
|
pos_y.push_back(y);
|
|
|
|
app_grid++;
|
|
|
|
if(Settings.view == 2)
|
|
{
|
|
// wenn zeile voll, zur nächsten gehen
|
|
if(app_grid == apps_numers / apps_row)
|
|
{
|
|
y = 4;
|
|
x += 120;
|
|
app_grid = 0;
|
|
}
|
|
else
|
|
y += 50;
|
|
}
|
|
else
|
|
{
|
|
// wenn zeile voll, zur nächsten gehen
|
|
if(app_grid == apps_row)
|
|
{
|
|
x = screenwidth / 2 - (apps_btn.GetWidth() * apps_row) / 2;
|
|
if(Options.apps == 4)
|
|
y += 70;
|
|
else if(Options.apps == 5)
|
|
y += 63;
|
|
app_grid = 0;
|
|
}
|
|
else
|
|
x += 144;
|
|
}
|
|
}
|
|
|
|
if(Settings.current_page > Settings.total_page)
|
|
Settings.current_page = Settings.total_page;
|
|
|
|
// wenn nicht seite 1
|
|
if(Settings.current_page != 1)
|
|
{
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
{
|
|
AppsBtn[i]->SetVisible(false);
|
|
AppsBtn[i]->SetSelectable(false);
|
|
}
|
|
|
|
for(int i = 0; i < apps_numers; i++)
|
|
{
|
|
if((Settings.current_page-1)*apps_numers+i < gesamt_apps)
|
|
{
|
|
AppsBtn[(Settings.current_page-1)*apps_numers+i]->SetVisible(true);
|
|
AppsBtn[(Settings.current_page-1)*apps_numers+i]->SetSelectable(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
// move button
|
|
GuiButton * AppsBtnMove = NULL;
|
|
GuiImageData * icon_dataMove;
|
|
GuiImage * ViewIconMove;
|
|
GuiText * AppsBtnTxtMove1 = new GuiText("", 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
GuiText * AppsBtnTxtMove2 = new GuiText("", 24, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 100});
|
|
GuiText * AppsBtnTxtMove3 = new GuiText("", 20, (GXColor){Theme.apps_1, Theme.apps_2, Theme.apps_3, 255});
|
|
GuiImage * appsBtnImgMove = new GuiImage(&apps_btnOver);
|
|
AppsBtnMove = new GuiButton(apps_btn.GetWidth(), apps_btn.GetHeight());
|
|
AppsBtnMove->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnMove->SetLabel(AppsBtnTxtMove1, 0);
|
|
AppsBtnMove->SetLabel(AppsBtnTxtMove2, 1);
|
|
AppsBtnMove->SetLabel(AppsBtnTxtMove3, 2);
|
|
AppsBtnMove->SetImage(appsBtnImgMove);
|
|
AppsBtnMove->SetVisible(false);
|
|
|
|
// platzhalter
|
|
GuiButton * AppsBtnFree = NULL;
|
|
GuiImage * appsBtnImgFree = new GuiImage(&apps_btn);
|
|
appsBtnImgFree->SetAlpha(100);
|
|
AppsBtnFree = new GuiButton(apps_btn.GetWidth(), apps_btn.GetHeight());
|
|
AppsBtnFree->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnFree->SetImage(appsBtnImgFree);
|
|
AppsBtnFree->SetVisible(false);
|
|
|
|
// page
|
|
char buffer[20];
|
|
sprintf(buffer, tr("Page %i of %i"), Settings.current_page, Settings.total_page);
|
|
GuiText * pageTxt = new GuiText(buffer, 20, (GXColor){Theme.page_1, Theme.page_2, Theme.page_3, 255});
|
|
pageTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
pageTxt->SetPosition(0,430);
|
|
|
|
// new rev
|
|
GuiText newRevTxt(tr("New Rev is available for download"), 16, (GXColor){Theme.page_1, Theme.page_2, Theme.page_3, 255});
|
|
newRevTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
newRevTxt.SetPosition(0,415);
|
|
|
|
// Apps Anzeigefeld
|
|
GuiWindow Apps(screenwidth, screenheight);
|
|
if(Options.slide_effect > 0 && temp_slide)
|
|
Apps.SetEffect(Settings.Apps_from | EFFECT_SLIDE_IN, Options.slide_effect * 50);
|
|
|
|
// slide temporär aktivieren
|
|
temp_slide = true;
|
|
|
|
HaltGui();
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
Apps.Append(AppsBtn[i]);
|
|
Apps.Append(AppsBtnFree);
|
|
Apps.Append(AppsBtnMove);
|
|
|
|
GuiWindow w(screenwidth, screenheight);
|
|
if(Settings.view == 1 || Settings.view == 0)
|
|
{
|
|
Apps.Append(&categoryTxt);
|
|
w.Append(&categoryBtn);
|
|
w.Append(&leftBtn);
|
|
w.Append(&rightBtn);
|
|
w.Append(&minusBtn);
|
|
w.Append(&plusBtn);
|
|
w.Append(&sd_usb_Btn);
|
|
w.Append(&wii_gc_Btn);
|
|
w.Append(&normal_grid_Btn);
|
|
w.Append(&settings_Btn);
|
|
w.Append(&power_Btn);
|
|
w.Append(&network_Btn);
|
|
w.Append(pageTxt);
|
|
}
|
|
else if(Settings.view == 2)
|
|
{
|
|
w.Append(&desktop_Img);
|
|
w.Append(&bar_Img);
|
|
w.Append(&start_Btn);
|
|
}
|
|
|
|
w.Append(&LogoHomebrewFilterImg);
|
|
w.Append(&ownerTxt);
|
|
|
|
if(CheckRev() && Options.newrevtext)
|
|
w.Append(&newRevTxt);
|
|
|
|
mainWindow->Append(&Apps);
|
|
mainWindow->Append(&w);
|
|
|
|
mainWindow->ChangeFocus(&Apps);
|
|
ResumeGui();
|
|
|
|
// letzte app markieren
|
|
if(app_pos != -1)
|
|
{
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
{
|
|
if(i == app_pos)
|
|
AppsBtn[i]->SetState(STATE_SELECTED);
|
|
else
|
|
AppsBtn[i]->ResetState();
|
|
}
|
|
}
|
|
|
|
bool next_page = false;
|
|
bool previous_page = false;
|
|
|
|
while(menu == MENU_NONE)
|
|
{
|
|
usleep(100);
|
|
|
|
if(mainWindow->GetState() != STATE_DISABLED)
|
|
{
|
|
// Sortieren
|
|
if(WPAD_ButtonsDown(0) & WPAD_BUTTON_1 && Settings.current_category != 0)
|
|
{
|
|
switch (sortPrompt())
|
|
{
|
|
case NAME_A_Z:
|
|
sort(vechomebrew_list_category[Settings.current_category].begin(), vechomebrew_list_category[Settings.current_category].end(), sort_name_a_z);
|
|
break;
|
|
case NAME_Z_A:
|
|
sort(vechomebrew_list_category[Settings.current_category].begin(), vechomebrew_list_category[Settings.current_category].end(), sort_name_z_a);
|
|
break;
|
|
case FOLDERNAME_A_Z:
|
|
sort(vechomebrew_list_category[Settings.current_category].begin(), vechomebrew_list_category[Settings.current_category].end(), sort_foldername_a_z);
|
|
break;
|
|
case FOLDERNAME_Z_A:
|
|
sort(vechomebrew_list_category[Settings.current_category].begin(), vechomebrew_list_category[Settings.current_category].end(), sort_foldername_z_a);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
sort_apps();
|
|
menu = MENU_MAIN;
|
|
}
|
|
|
|
// Netzwerksymbol anzeigen
|
|
if(IsNetworkInit())
|
|
{
|
|
network_Btn.SetImage(&network_BtnImgOver);
|
|
ResumeTcpThread();
|
|
if(boot_buffer)
|
|
menu = MENU_EXIT;
|
|
}
|
|
else if(!IsNetworkInit() || IsNetworkError())
|
|
network_Btn.SetImage(&network_BtnImg);
|
|
else
|
|
{
|
|
networtwaittime++;
|
|
if(networkswitch && networtwaittime == 10000)
|
|
{
|
|
networtwaittime = 0;
|
|
networkswitch = false;
|
|
network_Btn.SetImage(&network_BtnImgOver);
|
|
}
|
|
else if(!networkswitch && networtwaittime == 10000)
|
|
{
|
|
networtwaittime = 0;
|
|
networkswitch = true;
|
|
network_Btn.SetImage(&network_BtnImg);
|
|
}
|
|
}
|
|
|
|
// Beenden
|
|
if(PowerOff != -1)
|
|
menu = MENU_EXIT;
|
|
|
|
// ansicht wechseln
|
|
if(normal_grid_Btn.GetState() == STATE_CLICKED)
|
|
{
|
|
int choice = viewPrompt();
|
|
|
|
if(choice == 0)
|
|
Settings.view = 0;
|
|
else if(choice == 1)
|
|
Settings.view = 1;
|
|
else if(choice == 2)
|
|
Settings.view = 2;
|
|
|
|
if(choice != -1)
|
|
{
|
|
// check_device();
|
|
Settings.current_page = 1;
|
|
menu = MENU_MAIN;
|
|
}
|
|
else
|
|
normal_grid_Btn.ResetState();
|
|
}
|
|
|
|
// wenn A gedrückt
|
|
if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A)
|
|
button = "A";
|
|
|
|
// wenn B gedrückt
|
|
if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B)
|
|
button = "B";
|
|
|
|
// Settings
|
|
if(settings_Btn.GetState() == STATE_CLICKED)
|
|
{
|
|
menu = MENU_SETTINGS;
|
|
}
|
|
|
|
// SD, USB
|
|
else if(sd_usb_Btn.GetState() == STATE_CLICKED || Settings.sd_insert == -1 || Settings.sd_insert == 2 || Settings.usb_insert == -1 || Settings.usb_insert == 2)
|
|
{
|
|
int device = -1;
|
|
if(sd_usb_Btn.GetState() == STATE_CLICKED)
|
|
device = devicePrompt();
|
|
|
|
if(device == 1)
|
|
Settings.device = "sd1";
|
|
else if(device == 2)
|
|
Settings.device = "usb1";
|
|
else if(device == 3)
|
|
Settings.device = "sd_usb";
|
|
|
|
if(device != -1 || Settings.sd_insert == -1 || Settings.sd_insert == 2 || Settings.usb_insert == -1 || Settings.usb_insert == 2)
|
|
{
|
|
check_device();
|
|
Settings.current_page = 1;
|
|
menu = MENU_MAIN;
|
|
}
|
|
else
|
|
sd_usb_Btn.ResetState();
|
|
}
|
|
|
|
// Wii, GC
|
|
else if(wii_gc_Btn.GetState() == STATE_CLICKED)
|
|
{
|
|
int choice = systemPrompt();
|
|
|
|
if(choice == 0)
|
|
Settings.system = 1;
|
|
else if(choice == 1)
|
|
Settings.system = 0;
|
|
else if(choice == 2)
|
|
Settings.system = 2;
|
|
|
|
if(choice != -1)
|
|
{
|
|
check_device();
|
|
Settings.current_page = 1;
|
|
menu = MENU_MAIN;
|
|
}
|
|
else
|
|
wii_gc_Btn.ResetState();
|
|
}
|
|
|
|
// Power button
|
|
else if(power_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & (WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME) || PAD_ButtonsDown(0) & PAD_BUTTON_START)
|
|
{
|
|
power_Btn.ResetState();
|
|
if(endPrompt() == MENU_EXIT)
|
|
menu = MENU_EXIT;
|
|
}
|
|
|
|
// Netzwerk button
|
|
else if(network_Btn.GetState() == STATE_CLICKED)
|
|
{
|
|
network_Btn.ResetState();
|
|
ResumeNetworkThread();
|
|
}
|
|
|
|
if(Settings.view != 2)
|
|
{
|
|
// eine Seite weiter bzw zurück
|
|
if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT || rightBtn.GetState() == STATE_CLICKED ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_BUTTON_LEFT || leftBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
// Abbrechen Seite zurück
|
|
if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT || rightBtn.GetState() == STATE_CLICKED)
|
|
previous_page = false;
|
|
|
|
// Abbrechen Seite weiter
|
|
if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_BUTTON_LEFT || leftBtn.GetState() == STATE_CLICKED)
|
|
next_page = false;
|
|
|
|
int page = Settings.current_page;
|
|
bool change = false;
|
|
if(next_page || rightBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation))
|
|
{
|
|
rightBtn.ResetState();
|
|
Settings.current_page++;
|
|
if(Settings.current_page > Settings.total_page)
|
|
Settings.current_page = 1;
|
|
|
|
Settings.Apps_from = EFFECT_SLIDE_RIGHT;
|
|
Settings.Apps_to = EFFECT_SLIDE_LEFT;
|
|
|
|
next_page = false;
|
|
|
|
if(Settings.total_page != 1)
|
|
change = true;
|
|
}
|
|
|
|
if(previous_page || leftBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation))
|
|
{
|
|
leftBtn.ResetState();
|
|
Settings.current_page--;
|
|
if(Settings.current_page == 0)
|
|
Settings.current_page = Settings.total_page;
|
|
|
|
Settings.Apps_from = EFFECT_SLIDE_LEFT;
|
|
Settings.Apps_to = EFFECT_SLIDE_RIGHT;
|
|
|
|
previous_page = false;
|
|
if(Settings.total_page != 1)
|
|
change = true;
|
|
}
|
|
|
|
if(change)
|
|
{
|
|
HaltResumeGui(); // -> um nur eine Seite zu blättern
|
|
|
|
// alten apps ausblenden
|
|
if(Options.slide_effect > 0 && Settings.Apps_to != 0)
|
|
{
|
|
Apps.SetEffect(Settings.Apps_to | EFFECT_SLIDE_OUT, Options.slide_effect * 50);
|
|
while(Apps.GetEffect() > 0)
|
|
usleep(100);
|
|
}
|
|
|
|
for(int i = 0; i < apps_numers; i++)
|
|
{
|
|
// vorherige seite ausblenden
|
|
if((page-1)*apps_numers+i < gesamt_apps)
|
|
{
|
|
AppsBtn[(page-1)*apps_numers+i]->SetVisible(false);
|
|
AppsBtn[(page-1)*apps_numers+i]->SetSelectable(false);
|
|
AppsBtn[(page-1)*apps_numers+i]->ResetState();
|
|
}
|
|
// aktuelle seite einblenden
|
|
if((Settings.current_page-1)*apps_numers+i < gesamt_apps)
|
|
{
|
|
AppsBtn[(Settings.current_page-1)*apps_numers+i]->SetVisible(true);
|
|
AppsBtn[(Settings.current_page-1)*apps_numers+i]->SetSelectable(true);
|
|
AppsBtn[(Settings.current_page-1)*apps_numers+i]->ResetState();
|
|
}
|
|
// zu verschiebene app ausblenden und leeres feld einblenden
|
|
if(grab && (Settings.current_page-1)*apps_numers+i == move.nr)
|
|
{
|
|
AppsBtn[move.nr]->SetVisible(false);
|
|
AppsBtn[move.nr]->SetSelectable(false);
|
|
}
|
|
}
|
|
|
|
// felder in ursprungsposition setzen
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
AppsBtn[i]->SetPosition(pos_x[i], pos_y[i]);
|
|
|
|
// beim seitenwechsel, leeres feld positionieren
|
|
if(Settings.current_page == move.page)
|
|
AppsBtnFree->SetPosition(pos_x[move.nr], pos_y[move.nr]);
|
|
else
|
|
AppsBtnFree->SetPosition(-1000, -1000);
|
|
|
|
// app 1 auf der aktuellen seite markieren, außer beim verschieben
|
|
if(!grab)
|
|
AppsBtn[(Settings.current_page-1)*apps_numers]->SetState(STATE_SELECTED);
|
|
|
|
// neue apps einblenden
|
|
if(Options.slide_effect > 0)
|
|
Apps.SetEffect(Settings.Apps_from | EFFECT_SLIDE_IN, Options.slide_effect * 50);
|
|
|
|
char buffer[100];
|
|
sprintf(buffer, tr("Page %i of %i"), Settings.current_page, Settings.total_page);
|
|
pageTxt->SetText(buffer);
|
|
}
|
|
|
|
|
|
/* // eine Seite weiter
|
|
if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT || rightBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
for(int i = 1; i < apps_numers/apps_row +1; i++)
|
|
{
|
|
if(Apps.GetSelected() == i * apps_row -1 + (Settings.current_page -1) * apps_numers || Apps.GetSelected() == gesamt_apps -1)
|
|
{
|
|
next_page = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
*/ }
|
|
// eine Kategorie weiter
|
|
else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_TRIGGER_R || plusBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
Next_Category();
|
|
menu = MENU_MAIN;
|
|
}
|
|
|
|
// eine Kategorie zurück
|
|
else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && !Options.navigation) ||
|
|
(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && Options.navigation) ||
|
|
PAD_ButtonsDown(0) & PAD_TRIGGER_L || minusBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
Previous_Category();
|
|
menu = MENU_MAIN;
|
|
}
|
|
|
|
// Kategorie umbenennen / verschieben
|
|
else if(categoryBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
categoryBtn.ResetState();
|
|
Category_rename_move(button);
|
|
temp_slide = false;
|
|
menu = MENU_MAIN;
|
|
}
|
|
|
|
for(int i = 1; i < apps_numers/apps_row +1; i++)
|
|
{
|
|
if(Apps.GetSelected() == (i -1) * apps_row + (Settings.current_page -1) * apps_numers)
|
|
previous_page = true;
|
|
|
|
if(Apps.GetSelected() == i * apps_row -1 + (Settings.current_page -1) * apps_numers || Apps.GetSelected() == gesamt_apps -1)
|
|
next_page = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(start_Btn.GetState() == STATE_CLICKED)
|
|
{
|
|
start_Btn.ResetState();
|
|
// int CategoryNr, AppNr;
|
|
// int choice = startmenuPrompt(CategoryNr, AppNr);
|
|
int choice = startmenu2Prompt();
|
|
|
|
char buffer[20];
|
|
sprintf(buffer, "%i", choice);
|
|
debug(buffer);
|
|
|
|
if(choice == -1)
|
|
normal_grid_Btn.SetState(STATE_CLICKED);
|
|
else if(choice == -2)
|
|
settings_Btn.SetState(STATE_CLICKED);
|
|
else if(choice == -3)
|
|
power_Btn.SetState(STATE_CLICKED);
|
|
else if(choice == 1)
|
|
{
|
|
// char buffer[20];
|
|
// sprintf(buffer, "%i %i", CategoryNr, AppNr);
|
|
// debug(buffer);
|
|
|
|
// menu = ChoiceAppInfo(vechomebrew_list_category[CategoryNr], AppNr);
|
|
temp_slide = false;
|
|
}
|
|
// normal_grid_Btn.SetState(STATE_CLICKED);
|
|
}
|
|
}
|
|
|
|
// list apps
|
|
for(int i = (Settings.current_page-1)*apps_numers; i < Settings.current_page*apps_numers && i < gesamt_apps; i++)
|
|
{
|
|
// show apps info
|
|
if(AppsBtn[i]->GetState() == STATE_CLICKED && button == "A")
|
|
{
|
|
debug("test");
|
|
AppsBtn[i]->SetState(STATE_SELECTED);
|
|
|
|
menu = ChoiceAppInfo(vechomebrew_list_choice, i);
|
|
temp_slide = false;
|
|
|
|
mainWindow->ChangeFocus(&Apps);
|
|
for(int x=0; x < gesamt_apps; x++)
|
|
{
|
|
if(x == i)
|
|
AppsBtn[x]->SetState(STATE_SELECTED);
|
|
else
|
|
AppsBtn[x]->ResetState();
|
|
}
|
|
}
|
|
|
|
// move apps
|
|
if(AppsBtn[i]->GetState() == STATE_CLICKED && button == "B" && !grab)
|
|
{
|
|
AppsBtn[i]->ResetState();
|
|
if(Settings.current_category != 0 && strcasecmp(Settings.code,"NULL") == 0 && WPAD_ButtonsDown(0) & WPAD_BUTTON_B)
|
|
{
|
|
pointer = new GuiImageData(Theme.player_grab);
|
|
grab = true;
|
|
move.nr = i;
|
|
move.page = Settings.current_page;
|
|
|
|
// Werte Move Button übergeben
|
|
icon_dataMove = new GuiImageData(vechomebrew_list_choice[i].icon);
|
|
ViewIconMove = new GuiImage(icon_dataMove);
|
|
|
|
// Grid Ansicht
|
|
if(Settings.view == 1)
|
|
{
|
|
AppsBtnTxtMove1->SetText("");
|
|
if(vechomebrew_list_choice[i].icon == NULL)
|
|
{
|
|
AppsBtnTxtMove1->SetText(vechomebrew_list_choice[i].name.c_str());
|
|
AppsBtnTxtMove1->SetMaxWidth(100, SCROLL_HORIZONTAL);
|
|
}
|
|
ViewIconMove->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
|
|
}
|
|
// Normale Ansicht
|
|
else
|
|
{
|
|
AppsBtnTxtMove1->SetText(vechomebrew_list_choice[i].name.c_str());
|
|
AppsBtnTxtMove2->SetText("....................................................");
|
|
AppsBtnTxtMove3->SetText(tr(vechomebrew_list_choice[i].info.c_str()));
|
|
|
|
ViewIconMove->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
|
ViewIconMove->SetPosition(10, 0);
|
|
AppsBtnTxtMove1->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxtMove2->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxtMove3->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
|
AppsBtnTxtMove1->SetPosition(160, 10);
|
|
AppsBtnTxtMove1->SetMaxWidth(265, DOTTED);
|
|
AppsBtnTxtMove2->SetPosition(160, 17);
|
|
AppsBtnTxtMove2->SetMaxWidth(260, DOTTED);
|
|
AppsBtnTxtMove3->SetPosition(160, 40);
|
|
AppsBtnTxtMove3->SetMaxWidth(265, DOTTED);
|
|
}
|
|
|
|
AppsBtnMove->SetIcon(ViewIconMove);
|
|
AppsBtnMove->SetVisible(true);
|
|
|
|
// button ausblenden
|
|
AppsBtn[i]->SetVisible(false);
|
|
|
|
// leeres feld einblenden
|
|
AppsBtnFree->SetPosition(pos_x[move.nr], pos_y[move.nr]);
|
|
AppsBtnFree->SetVisible(true);
|
|
|
|
move.nr_selected = move.nr;
|
|
}
|
|
}
|
|
|
|
if(AppsBtn[i]->GetState() == STATE_SELECTED && i != move.nr)
|
|
{
|
|
move.nr_selected = i;
|
|
move.new_app = true;
|
|
}
|
|
}
|
|
|
|
if(grab)
|
|
{
|
|
int x = userInput[0].wpad->ir.x - AppsBtnMove->GetWidth()/2;
|
|
int y = userInput[0].wpad->ir.y - AppsBtnMove->GetHeight()/2;
|
|
AppsBtnMove->SetPosition(x, y);
|
|
|
|
if(move.new_app)
|
|
{
|
|
move.new_app = false;
|
|
|
|
// leeres button feld anzeigen
|
|
int i = 0;
|
|
if( pos_x[move.nr_selected] == AppsBtn[move.nr_selected]->GetLeft() && pos_y[move.nr_selected] == AppsBtn[move.nr_selected]->GetTop() )
|
|
i = move.nr_selected;
|
|
else
|
|
{
|
|
if(move.nr < move.nr_selected)
|
|
i = move.nr_selected -1;
|
|
else if(move.nr > move.nr_selected)
|
|
i = move.nr_selected +1;
|
|
}
|
|
AppsBtnFree->SetPosition(pos_x[i], pos_y[i]);
|
|
|
|
for(i = 0; i < apps_numers && (Settings.current_page-1)*apps_numers+i < gesamt_apps; i++)
|
|
{
|
|
int x = (Settings.current_page-1)*apps_numers+i;
|
|
// buttons 1 kleiner button 2
|
|
if(move.nr < move.nr_selected)
|
|
{
|
|
if(x > move.nr && x < move.nr_selected +1)
|
|
{
|
|
if(x == move.nr_selected && (pos_x[move.nr_selected] != AppsBtn[move.nr_selected]->GetLeft() || pos_y[move.nr_selected] != AppsBtn[move.nr_selected]->GetTop()))
|
|
AppsBtn[x]->SetPosition(pos_x[x], pos_y[x]);
|
|
else if(x == (Settings.current_page-1) * apps_numers)
|
|
AppsBtn[x]->SetPosition(-1000, -1000);
|
|
else
|
|
AppsBtn[x]->SetPosition(pos_x[x -1], pos_y[x -1]);
|
|
}
|
|
else
|
|
AppsBtn[x]->SetPosition(pos_x[x], pos_y[x]);
|
|
}
|
|
// buttons 1 größer button 2
|
|
else if(move.nr > move.nr_selected)
|
|
{
|
|
if(x < move.nr && x >= move.nr_selected)
|
|
{
|
|
if(x == move.nr_selected && (pos_x[move.nr_selected] != AppsBtn[move.nr_selected]->GetLeft() || pos_y[move.nr_selected] != AppsBtn[move.nr_selected]->GetTop()))
|
|
AppsBtn[x]->SetPosition(pos_x[x], pos_y[x]);
|
|
else if(x +1 == Settings.current_page * apps_numers)
|
|
AppsBtn[x]->SetPosition(-1000, -1000);
|
|
else
|
|
AppsBtn[x]->SetPosition(pos_x[x +1], pos_y[x +1]);
|
|
}
|
|
else
|
|
AppsBtn[x]->SetPosition(pos_x[x], pos_y[x]);
|
|
}
|
|
AppsBtn[x]->ResetState();
|
|
}
|
|
|
|
if(move.nr < move.nr_selected)
|
|
{
|
|
if(pos_x[move.nr_selected] != AppsBtn[move.nr_selected]->GetLeft() || pos_y[move.nr_selected] != AppsBtn[move.nr_selected]->GetTop())
|
|
vor = false;
|
|
else
|
|
vor = true;
|
|
}
|
|
else if(move.nr > move.nr_selected)
|
|
{
|
|
if(pos_x[move.nr_selected] != AppsBtn[move.nr_selected]->GetLeft() || pos_y[move.nr_selected] != AppsBtn[move.nr_selected]->GetTop())
|
|
vor = true;
|
|
else
|
|
vor = false;
|
|
}
|
|
}
|
|
|
|
// wenn b losgelassen wurde
|
|
if(WPAD_ButtonsUp(0) & WPAD_BUTTON_B)
|
|
{
|
|
grab = false;
|
|
pointer = new GuiImageData(Theme.player_point);
|
|
AppsBtnMove->SetVisible(false);
|
|
AppsBtnFree->SetVisible(false);
|
|
|
|
// verschieben
|
|
if(AppsBtnFree->GetState() == STATE_SELECTED)
|
|
{
|
|
string AppOrdner1 = vechomebrew_list_choice[move.nr].foldername;
|
|
string AppOrdner2 = vechomebrew_list_choice[move.nr_selected].foldername;
|
|
|
|
AppVerschieben(Settings.category_name, AppOrdner1, vor, AppOrdner2);
|
|
copy_app_in_category();
|
|
// slide temporär deaktivieren
|
|
temp_slide = false;
|
|
menu = MENU_MAIN;
|
|
}
|
|
// nicht verschieben und button anzeigen
|
|
else
|
|
{
|
|
// felder in ursprungsposition setzen
|
|
for(int i=0; i < gesamt_apps; i++)
|
|
AppsBtn[i]->SetPosition(pos_x[i], pos_y[i]);
|
|
if(Settings.current_page == move.page)
|
|
AppsBtn[move.nr]->SetVisible(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(Options.slide_effect > 0 && Settings.Apps_to != 0 && temp_slide)
|
|
{
|
|
Apps.SetEffect(Settings.Apps_to | EFFECT_SLIDE_OUT, Options.slide_effect * 50);
|
|
while(Apps.GetEffect() > 0)
|
|
usleep(100);
|
|
}
|
|
HaltGui();
|
|
mainWindow->Remove(&Apps);
|
|
mainWindow->Remove(&w);
|
|
return menu;
|
|
} |