mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 06:15:43 +00:00
Added progress bar and message for overall status of components being installed. Also, we now display the icon for the folder or volume selected to install, including custom folder and disk icons. Added Quit menu and cmd+Quit keyboard handling. [r=ssu]
This commit is contained in:
parent
4130b8bf80
commit
1dba02fca2
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -108,42 +108,61 @@ void HandleKeyDown(EventRecord* evt)
|
||||
if ( (keyPressed == 'z') || (keyPressed == 'Z'))
|
||||
gDone = true; // backdoor exit
|
||||
#endif
|
||||
if (keyPressed == '\r') //dougt: what about tab, esc, arrows, doublebyte?
|
||||
switch(keyPressed) //dougt: what about tab, esc, arrows, doublebyte?
|
||||
{
|
||||
switch(gCurrWin)
|
||||
{
|
||||
case kLicenseID:
|
||||
KillControls(gWPtr);
|
||||
ShowWelcomeWin();
|
||||
return;
|
||||
case kWelcomeID:
|
||||
KillControls(gWPtr);
|
||||
ShowSetupTypeWin();
|
||||
return;
|
||||
case kSetupTypeID:
|
||||
KillControls(gWPtr);
|
||||
|
||||
/* treat last setup type selection as custom */
|
||||
if (gControls->opt->instChoice == gControls->cfg->numSetupTypes)
|
||||
ShowComponentsWin();
|
||||
else
|
||||
{
|
||||
case '\r':
|
||||
switch(gCurrWin)
|
||||
{
|
||||
case kLicenseID:
|
||||
KillControls(gWPtr);
|
||||
ShowWelcomeWin();
|
||||
return;
|
||||
case kWelcomeID:
|
||||
KillControls(gWPtr);
|
||||
ShowSetupTypeWin();
|
||||
return;
|
||||
case kSetupTypeID:
|
||||
KillControls(gWPtr);
|
||||
|
||||
/* treat last setup type selection as custom */
|
||||
if (gControls->opt->instChoice == gControls->cfg->numSetupTypes)
|
||||
ShowComponentsWin();
|
||||
else
|
||||
{
|
||||
ClearDiskSpaceMsgs();
|
||||
ShowTerminalWin();
|
||||
}
|
||||
return;
|
||||
case kComponentsID:
|
||||
KillControls(gWPtr);
|
||||
gControls->cw->compListBox.top = 0;
|
||||
EraseRect(&gControls->cw->compListBox);
|
||||
ClearDiskSpaceMsgs();
|
||||
ShowTerminalWin();
|
||||
}
|
||||
return;
|
||||
case kComponentsID:
|
||||
KillControls(gWPtr);
|
||||
gControls->cw->compListBox.top = 0;
|
||||
EraseRect(&gControls->cw->compListBox);
|
||||
ClearDiskSpaceMsgs();
|
||||
ShowTerminalWin();
|
||||
return;
|
||||
case kTerminalID:
|
||||
SpawnSDThread(Install, &tid);
|
||||
return;
|
||||
return;
|
||||
case kTerminalID:
|
||||
SpawnSDThread(Install, &tid);
|
||||
return;
|
||||
default:
|
||||
break; // never reached
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ( (evt->modifiers & cmdKey) != 0 )
|
||||
{
|
||||
switch(keyPressed)
|
||||
{
|
||||
case 'Q':
|
||||
case 'q':
|
||||
gDone = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break; // never reached
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -161,7 +180,12 @@ void HandleMenuChoice(SInt32 aChoice)
|
||||
Alert(rAboutBox, nil);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case mFile:
|
||||
if (menuItem == iQuit)
|
||||
gDone = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -522,39 +522,51 @@ InitProgressBar(void)
|
||||
{
|
||||
SetPort(gWPtr);
|
||||
|
||||
gControls->tw->progressBar = NULL;
|
||||
gControls->tw->progressBar = GetNewControl(rInstProgBar, gWPtr);
|
||||
if (gControls->tw->progressBar)
|
||||
gControls->tw->allProgressBar = NULL;
|
||||
gControls->tw->allProgressBar = GetNewControl(rAllProgBar, gWPtr);
|
||||
|
||||
gControls->tw->xpiProgressBar = NULL;
|
||||
gControls->tw->xpiProgressBar = GetNewControl(rPerXPIProgBar, gWPtr);
|
||||
|
||||
if (gControls->tw->allProgressBar && gControls->tw->xpiProgressBar)
|
||||
{
|
||||
SetControlData(gControls->tw->progressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
/* init overall prog indicator */
|
||||
SetControlData(gControls->tw->allProgressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
sizeof(indeterminateFlag), (Ptr) &indeterminateFlag);
|
||||
Draw1Control(gControls->tw->progressBar);
|
||||
Draw1Control(gControls->tw->allProgressBar);
|
||||
|
||||
gControls->tw->progressMsg = NULL;
|
||||
HLock((Handle)gControls->tw->progressBar);
|
||||
SetRect(&r, (*gControls->tw->progressBar)->contrlRect.left,
|
||||
(*gControls->tw->progressBar)->contrlRect.top - 42,
|
||||
(*gControls->tw->progressBar)->contrlRect.right,
|
||||
(*gControls->tw->progressBar)->contrlRect.top - 26 );
|
||||
HUnlock((Handle)gControls->tw->progressBar);
|
||||
gControls->tw->progressMsg = TENew(&r, &r);
|
||||
if (gControls->tw->progressMsg)
|
||||
/* init xpi package name display */
|
||||
gControls->tw->allProgressMsg = NULL;
|
||||
HLock((Handle)gControls->tw->allProgressBar);
|
||||
SetRect(&r, (*gControls->tw->allProgressBar)->contrlRect.left,
|
||||
(*gControls->tw->allProgressBar)->contrlRect.top - 21,
|
||||
(*gControls->tw->allProgressBar)->contrlRect.right,
|
||||
(*gControls->tw->allProgressBar)->contrlRect.top - 5 );
|
||||
HUnlock((Handle)gControls->tw->allProgressBar);
|
||||
gControls->tw->allProgressMsg = TENew(&r, &r);
|
||||
if (gControls->tw->allProgressMsg)
|
||||
{
|
||||
GetIndString(extractingStr, rStringList, sExtracting);
|
||||
TEInsert(&extractingStr[1], extractingStr[0], gControls->tw->progressMsg);
|
||||
TEInsert(&extractingStr[1], extractingStr[0], gControls->tw->allProgressMsg);
|
||||
}
|
||||
|
||||
/* init per xpi prog indicator */
|
||||
SetControlData(gControls->tw->xpiProgressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
sizeof(indeterminateFlag), (Ptr) &indeterminateFlag);
|
||||
HideControl(gControls->tw->xpiProgressBar);
|
||||
|
||||
|
||||
TextFace(normal);
|
||||
TextSize(9);
|
||||
TextFont(applFont);
|
||||
|
||||
gControls->tw->xpiProgressMsg = NULL; /* used by XPInstall progress callback */
|
||||
HLock((Handle)gControls->tw->progressBar);
|
||||
SetRect(&r, (*gControls->tw->progressBar)->contrlRect.left,
|
||||
(*gControls->tw->progressBar)->contrlRect.top - 42,
|
||||
(*gControls->tw->progressBar)->contrlRect.right,
|
||||
(*gControls->tw->progressBar)->contrlRect.top - 5 );
|
||||
HUnlock((Handle)gControls->tw->progressBar);
|
||||
HLock((Handle)gControls->tw->xpiProgressBar);
|
||||
SetRect(&r, (*gControls->tw->xpiProgressBar)->contrlRect.left,
|
||||
(*gControls->tw->xpiProgressBar)->contrlRect.top - 21,
|
||||
(*gControls->tw->xpiProgressBar)->contrlRect.right,
|
||||
(*gControls->tw->xpiProgressBar)->contrlRect.top - 5 );
|
||||
HUnlock((Handle)gControls->tw->xpiProgressBar);
|
||||
gControls->tw->xpiProgressMsg = TENew(&r, &r);
|
||||
|
||||
TextFont(systemFont); /* restore systemFont */
|
||||
|
@ -221,12 +221,7 @@ void MakeMenus(void)
|
||||
}
|
||||
else
|
||||
ErrorHandler();
|
||||
|
||||
if ( (menuHdl = GetMenuHandle(mFile)) != nil)
|
||||
DisableItem(menuHdl, 0);
|
||||
else
|
||||
ErrorHandler();
|
||||
|
||||
|
||||
if ( (menuHdl = GetMenuHandle(mEdit)) != nil)
|
||||
DisableItem(menuHdl, 0);
|
||||
else
|
||||
|
@ -30,12 +30,14 @@
|
||||
#include <Navigation.h>
|
||||
#include <MacTypes.h>
|
||||
#include <PLStringFuncs.h>
|
||||
#include <Icons.h>
|
||||
|
||||
#include "FullPath.h"
|
||||
#include "MoreFilesExtras.h"
|
||||
#include "Threads.h"
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
* SBI: SmartDownload administration
|
||||
*-----------------------------------------------------------*/
|
||||
@ -150,7 +152,8 @@ if (err) \
|
||||
#define rCheckboxLDEF 128
|
||||
|
||||
#define rStartMsgBox 160
|
||||
#define rInstProgBar 161
|
||||
#define rAllProgBar 161
|
||||
#define rPerXPIProgBar 162
|
||||
|
||||
|
||||
#define rMBar 128 /* menu rsrc ids */
|
||||
@ -191,7 +194,8 @@ if (err) \
|
||||
#define sExtracting 23
|
||||
#define sInstalling 24
|
||||
#define sFileSp 25
|
||||
#define sSpOfSp 26
|
||||
#define sSpOfSp 26
|
||||
#define sProcessing 27
|
||||
|
||||
#define rTitleStrList 170
|
||||
#define sNSInstTitle 1 /* end i18n strings */
|
||||
@ -369,8 +373,9 @@ typedef struct CompWin {
|
||||
typedef struct TermWin {
|
||||
TEHandle startMsg;
|
||||
Rect startMsgBox;
|
||||
ControlHandle progressBar;
|
||||
TEHandle progressMsg;
|
||||
ControlHandle allProgressBar;
|
||||
TEHandle allProgressMsg;
|
||||
ControlHandle xpiProgressBar;
|
||||
TEHandle xpiProgressMsg;
|
||||
} TermWin;
|
||||
|
||||
|
@ -272,9 +272,9 @@ InSetupTypeContent(EventRecord* evt, WindowPtr wCurrPtr)
|
||||
** Whilst, the -folder- string is used by DrawDiskNFolder() in repainting.
|
||||
*/
|
||||
pstrcpy(gControls->opt->folder, folderSpec.name);
|
||||
DrawDiskNFolder(folderSpec.vRefNum, folderSpec.name);
|
||||
gControls->opt->vRefNum = tmp.vRefNum;
|
||||
gControls->opt->dirID = tmp.parID;
|
||||
DrawDiskNFolder(folderSpec.vRefNum, folderSpec.name);
|
||||
}
|
||||
|
||||
AEDisposeDesc(&resultDesc);
|
||||
@ -325,10 +325,13 @@ DrawDiskNFolder(short vRefNum, unsigned char *folder)
|
||||
{
|
||||
Str255 inFolderMsg, onDiskMsg, volName;
|
||||
char *cstr;
|
||||
Rect viewRect, dlb;
|
||||
Rect viewRect, dlb, iconRect;
|
||||
TEHandle pathInfo;
|
||||
short bCmp;
|
||||
OSErr err = noErr;
|
||||
FSSpec fsTarget;
|
||||
IconRef icon;
|
||||
SInt16 label;
|
||||
|
||||
/* get vol and folder name */
|
||||
if ((err = GetVol(volName, &vRefNum)) == noErr)
|
||||
@ -376,6 +379,17 @@ DrawDiskNFolder(short vRefNum, unsigned char *folder)
|
||||
TextSize(12);
|
||||
}
|
||||
|
||||
/* draw folder/volume icon */
|
||||
FSMakeFSSpec(gControls->opt->vRefNum, gControls->opt->dirID, "\p", &fsTarget);
|
||||
err = GetIconRefFromFile(&fsTarget, &icon, &label);
|
||||
if (err==noErr)
|
||||
{
|
||||
#define ICON_DIM 32
|
||||
SetRect(&iconRect, viewRect.left+70, viewRect.top+10, viewRect.left+70+ICON_DIM, viewRect.top+10+ICON_DIM);
|
||||
PlotIconRef(&iconRect, kAlignNone, kTransformNone, kIconServicesNormalUsageFlag, icon);
|
||||
}
|
||||
ReleaseIconRef(icon);
|
||||
|
||||
/* free mem blocks */
|
||||
TEDispose(pathInfo);
|
||||
|
||||
|
@ -90,16 +90,16 @@ UpdateTerminalWin(void)
|
||||
SetPort(gWPtr);
|
||||
|
||||
TEUpdate(&gControls->tw->startMsgBox, gControls->tw->startMsg);
|
||||
if (gControls->tw->progressMsg)
|
||||
if (gControls->tw->allProgressMsg)
|
||||
{
|
||||
HLock((Handle)gControls->tw->progressMsg);
|
||||
SetRect(&instMsgRect, (*gControls->tw->progressMsg)->viewRect.left,
|
||||
(*gControls->tw->progressMsg)->viewRect.top,
|
||||
(*gControls->tw->progressMsg)->viewRect.right,
|
||||
(*gControls->tw->progressMsg)->viewRect.bottom );
|
||||
HUnlock((Handle)gControls->tw->progressMsg);
|
||||
HLock((Handle)gControls->tw->allProgressMsg);
|
||||
SetRect(&instMsgRect, (*gControls->tw->allProgressMsg)->viewRect.left,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.top,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.right,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.bottom );
|
||||
HUnlock((Handle)gControls->tw->allProgressMsg);
|
||||
|
||||
TEUpdate(&instMsgRect, gControls->tw->progressMsg);
|
||||
TEUpdate(&instMsgRect, gControls->tw->allProgressMsg);
|
||||
}
|
||||
|
||||
SetPort(oldPort);
|
||||
|
@ -29,12 +29,12 @@
|
||||
* XPInstall Glue
|
||||
*-----------------------------------------------------------*/
|
||||
|
||||
/* XPI Stub Entry Points */
|
||||
/*================== XPI Stub Entry Points ================== */
|
||||
typedef nsresult (*XPI_InitProc)(const FSSpec& aXPIStubDir, const FSSpec& aProgramDir, pfnXPIProgress progressCB);
|
||||
typedef nsresult (*XPI_InstallProc)(const FSSpec& file, const char* args,long flags);
|
||||
typedef nsresult (*XPI_ExitProc)();
|
||||
|
||||
/* XPI Run APIs */
|
||||
/*================== XPI Run APIs ============================*/
|
||||
OSErr LoadXPIStub(XPI_InitProc* pfnInit,
|
||||
XPI_InstallProc* pfnInstall,
|
||||
XPI_ExitProc* pfnExit,
|
||||
@ -42,19 +42,20 @@ OSErr LoadXPIStub(XPI_InitProc* pfnInit,
|
||||
FSSpec& aTargetDir);
|
||||
Boolean UnloadXPIStub(CFragConnectionID* connID);
|
||||
OSErr RunXPI(FSSpec&, XPI_InstallProc*);
|
||||
int CountSelectedXPIs();
|
||||
Boolean IsArchiveXPI(StringPtr archive);
|
||||
void ProgressMsgInit();
|
||||
|
||||
/* Progress Bar Callbacks */
|
||||
/*================== Progress Bar Callbacks ==================*/
|
||||
void xpicbProgress(const char* msg, PRInt32 val, PRInt32 max);
|
||||
|
||||
|
||||
/*================== Macros ==================================*/
|
||||
#define XPI_ERR_CHECK(_call) \
|
||||
rv = _call; \
|
||||
if (NS_FAILED(rv)) \
|
||||
{ \
|
||||
ErrorHandler(); \
|
||||
return rv; \
|
||||
return rv; \
|
||||
}
|
||||
|
||||
#ifdef MIW_DEBUG
|
||||
@ -71,14 +72,16 @@ ProgressMsgInit()
|
||||
{
|
||||
Rect r;
|
||||
|
||||
if (gControls->tw->progressMsg)
|
||||
if (gControls->tw->allProgressMsg)
|
||||
{
|
||||
HLock((Handle)gControls->tw->progressMsg);
|
||||
SetRect(&r, (*gControls->tw->progressMsg)->viewRect.left,
|
||||
(*gControls->tw->progressMsg)->viewRect.top,
|
||||
(*gControls->tw->progressMsg)->viewRect.right,
|
||||
(*gControls->tw->progressMsg)->viewRect.bottom );
|
||||
HUnlock((Handle)gControls->tw->progressMsg);
|
||||
HLock((Handle)gControls->tw->allProgressMsg);
|
||||
SetRect(&r, (*gControls->tw->allProgressMsg)->viewRect.left,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.top,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.right,
|
||||
(*gControls->tw->allProgressMsg)->viewRect.bottom );
|
||||
HUnlock((Handle)gControls->tw->allProgressMsg);
|
||||
|
||||
TESetText("", 0, gControls->tw->allProgressMsg);
|
||||
|
||||
EraseRect(&r);
|
||||
}
|
||||
@ -103,16 +106,20 @@ xpicbProgress(const char* msg, PRInt32 val, PRInt32 max)
|
||||
if (gWPtr)
|
||||
{
|
||||
SetPort(gWPtr);
|
||||
if (gControls->tw->progressBar)
|
||||
if (gControls->tw->xpiProgressBar)
|
||||
{
|
||||
if (!bProgMsgInit)
|
||||
ProgressMsgInit();
|
||||
|
||||
if (max!=0 && !bMaxDiscovered)
|
||||
{
|
||||
SetControlData(gControls->tw->progressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
SetControlData(gControls->tw->xpiProgressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
sizeof(indeterminateFlag), (Ptr) &indeterminateFlag);
|
||||
SetControlMaximum(gControls->tw->progressBar, max);
|
||||
SetControlMaximum(gControls->tw->xpiProgressBar, max);
|
||||
if (gControls->tw->allProgressBar)
|
||||
SetControlValue(gControls->tw->allProgressBar,
|
||||
GetControlValue(gControls->tw->allProgressBar)+1);
|
||||
|
||||
bMaxDiscovered = true;
|
||||
}
|
||||
else if (!bMaxDiscovered)
|
||||
@ -131,7 +138,7 @@ xpicbProgress(const char* msg, PRInt32 val, PRInt32 max)
|
||||
{
|
||||
EraseRect(&r);
|
||||
|
||||
GetIndString(installingStr, rStringList, sInstalling);
|
||||
GetIndString(installingStr, rStringList, sProcessing);
|
||||
leaf = strrchr(msg, ':');
|
||||
if (leaf)
|
||||
{
|
||||
@ -162,11 +169,11 @@ xpicbProgress(const char* msg, PRInt32 val, PRInt32 max)
|
||||
|
||||
if (bMaxDiscovered)
|
||||
{
|
||||
SetControlValue(gControls->tw->progressBar, val);
|
||||
SetControlValue(gControls->tw->xpiProgressBar, val);
|
||||
|
||||
if (gControls->tw->xpiProgressMsg)
|
||||
{
|
||||
GetIndString(installingStr, rStringList, sInstalling);
|
||||
GetIndString(installingStr, rStringList, sProcessing);
|
||||
GetIndString(fileStr, rStringList, sFileSp);
|
||||
GetIndString(ofStr, rStringList, sSpOfSp);
|
||||
HLock((Handle)gControls->tw->xpiProgressMsg);
|
||||
@ -214,8 +221,9 @@ RunAllXPIs(short xpiVRefNum, long xpiDirID, short vRefNum, long dirID)
|
||||
CFragConnectionID connID;
|
||||
nsresult rv = NS_OK;
|
||||
StringPtr pcurrArchive;
|
||||
int i, compsDone = 0, instChoice = gControls->opt->instChoice-1;;
|
||||
Boolean isCurrXPI = false;
|
||||
int i, len, compsDone = 0, numXPIs, currXPICount = 0, instChoice = gControls->opt->instChoice-1;
|
||||
Boolean isCurrXPI = false, indeterminateFlag = false;
|
||||
Str255 installingStr;
|
||||
|
||||
err = FSMakeFSSpec(vRefNum, dirID, 0, &xpiStubDirSpec); /* temp dir */
|
||||
err = FSMakeFSSpec(gControls->opt->vRefNum, gControls->opt->dirID, 0, &tgtDirSpec); /* program dir */
|
||||
@ -223,6 +231,20 @@ RunAllXPIs(short xpiVRefNum, long xpiDirID, short vRefNum, long dirID)
|
||||
ERR_CHECK_RET(LoadXPIStub(&xpi_initProc, &xpi_installProc, &xpi_exitProc, &connID, xpiStubDirSpec), err);
|
||||
XPI_ERR_CHECK(xpi_initProc( xpiStubDirSpec, tgtDirSpec, xpicbProgress ));
|
||||
|
||||
// init overall xpi indicator
|
||||
numXPIs = CountSelectedXPIs();
|
||||
if (gControls->tw->allProgressBar)
|
||||
{
|
||||
SetControlMaximum(gControls->tw->allProgressBar, numXPIs*2); // numXPIs * 2 so that prog bar moves more
|
||||
SetControlData(gControls->tw->allProgressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
sizeof(indeterminateFlag), (Ptr) &indeterminateFlag);
|
||||
SetControlValue(gControls->tw->allProgressBar, 0);
|
||||
Draw1Control(gControls->tw->allProgressBar);
|
||||
}
|
||||
|
||||
if (gControls->tw->xpiProgressBar)
|
||||
ShowControl(gControls->tw->xpiProgressBar);
|
||||
|
||||
// enumerate through all .xpi's
|
||||
// loop through 0 to kMaxComponents
|
||||
for(i=0; i<kMaxComponents; i++)
|
||||
@ -239,17 +261,38 @@ RunAllXPIs(short xpiVRefNum, long xpiDirID, short vRefNum, long dirID)
|
||||
{
|
||||
// if LAUNCHAPP attr wasn't set
|
||||
if (!gControls->cfg->comp[i].launchapp)
|
||||
HLock(gControls->cfg->comp[i].archive);
|
||||
pcurrArchive = CToPascal(*gControls->cfg->comp[i].archive);
|
||||
HUnlock(gControls->cfg->comp[i].archive);
|
||||
|
||||
isCurrXPI = IsArchiveXPI(pcurrArchive);
|
||||
|
||||
err = FSMakeFSSpec(xpiVRefNum, xpiDirID, pcurrArchive, &xpiSpec);
|
||||
if (err==noErr && isCurrXPI)
|
||||
RunXPI(xpiSpec, &xpi_installProc);
|
||||
if (pcurrArchive)
|
||||
DisposePtr((Ptr) pcurrArchive);
|
||||
{
|
||||
HLock(gControls->cfg->comp[i].archive);
|
||||
pcurrArchive = CToPascal(*gControls->cfg->comp[i].archive);
|
||||
HUnlock(gControls->cfg->comp[i].archive);
|
||||
|
||||
isCurrXPI = IsArchiveXPI(pcurrArchive);
|
||||
|
||||
err = FSMakeFSSpec(xpiVRefNum, xpiDirID, pcurrArchive, &xpiSpec);
|
||||
if (err==noErr && isCurrXPI)
|
||||
{
|
||||
// update package display name
|
||||
if (gControls->tw->allProgressMsg)
|
||||
{
|
||||
ProgressMsgInit();
|
||||
GetIndString(installingStr, rStringList, sInstalling);
|
||||
TEInsert(&installingStr[1], installingStr[0], gControls->tw->allProgressMsg);
|
||||
HLock(gControls->cfg->comp[i].shortDesc);
|
||||
len = strlen(*gControls->cfg->comp[i].shortDesc);
|
||||
TEInsert(*gControls->cfg->comp[i].shortDesc, (len>64?64:len), gControls->tw->allProgressMsg);
|
||||
HUnlock(gControls->cfg->comp[i].shortDesc);
|
||||
}
|
||||
|
||||
RunXPI(xpiSpec, &xpi_installProc);
|
||||
|
||||
// update progess bar
|
||||
if (gControls->tw->allProgressBar)
|
||||
SetControlValue(gControls->tw->allProgressBar,
|
||||
GetControlValue(gControls->tw->allProgressBar)+1);
|
||||
}
|
||||
if (pcurrArchive)
|
||||
DisposePtr((Ptr) pcurrArchive);
|
||||
}
|
||||
compsDone++;
|
||||
}
|
||||
}
|
||||
@ -274,8 +317,8 @@ RunXPI(FSSpec& aXPI, XPI_InstallProc *xpi_installProc)
|
||||
|
||||
/* reset progress bar to barber poll */
|
||||
bMaxDiscovered = false;
|
||||
if (gControls->tw->progressBar)
|
||||
SetControlData(gControls->tw->progressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
if (gControls->tw->xpiProgressBar)
|
||||
SetControlData(gControls->tw->xpiProgressBar, kControlNoPart, kControlProgressBarIndeterminateTag,
|
||||
sizeof(indeterminateFlag), (Ptr) &indeterminateFlag);
|
||||
if (NS_FAILED(rv))
|
||||
return -1;
|
||||
@ -284,6 +327,37 @@ RunXPI(FSSpec& aXPI, XPI_InstallProc *xpi_installProc)
|
||||
return err;
|
||||
}
|
||||
|
||||
int
|
||||
CountSelectedXPIs()
|
||||
{
|
||||
int i, instChoice = gControls->opt->instChoice - 1, compsDone = 0, numXPIs = 0;
|
||||
|
||||
// enumerate through all .xpi's
|
||||
// loop through 0 to kMaxComponents
|
||||
for(i=0; i<kMaxComponents; i++)
|
||||
{
|
||||
// general test: if component in setup type
|
||||
if ( (gControls->cfg->st[instChoice].comp[i] == kInSetupType) &&
|
||||
(compsDone < gControls->cfg->st[instChoice].numComps) )
|
||||
{
|
||||
// if custom and selected, or not custom setup type
|
||||
// add file to buffer
|
||||
if ( ((instChoice == gControls->cfg->numSetupTypes-1) &&
|
||||
(gControls->cfg->comp[i].selected == true)) ||
|
||||
(instChoice < gControls->cfg->numSetupTypes-1) )
|
||||
{
|
||||
// if LAUNCHAPP attr wasn't set
|
||||
if (!gControls->cfg->comp[i].launchapp)
|
||||
numXPIs++;
|
||||
}
|
||||
}
|
||||
else if (compsDone >= gControls->cfg->st[instChoice].numComps)
|
||||
break;
|
||||
}
|
||||
|
||||
return numXPIs;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
* XPI Stub Load/Unload
|
||||
*-------------------------------------------------------------------*/
|
||||
|
Loading…
Reference in New Issue
Block a user