203 lines
5.6 KiB
C++
203 lines
5.6 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
/*
|
|
BookmarkWhatsNewDialog.cpp -- dialog for checking "What's New".
|
|
Created: Stephen Lamm <slamm@netscape.com>, 28-May-97.
|
|
*/
|
|
|
|
|
|
|
|
#include "BookmarkWhatsNewDialog.h"
|
|
#include "bkmks.h"
|
|
#include "xfe.h"
|
|
#include "xpgetstr.h"
|
|
|
|
extern int XFE_LOOK_FOR_DOCUMENTS_THAT_HAVE_CHANGED_ON;
|
|
extern int XFE_ESTIMATED_TIME_REMAINING_CHECKED;
|
|
extern int XFE_ESTIMATED_TIME_REMAINING_CHECKING;
|
|
extern int XFE_DONE_CHECKING_ETC;
|
|
|
|
XFE_BookmarkWhatsNewDialog::XFE_BookmarkWhatsNewDialog(MWContext *context, Widget parent)
|
|
: XFE_Dialog(parent, "bookmarksWhatsChanged",
|
|
TRUE, // ok
|
|
TRUE, // cancel
|
|
FALSE, // help
|
|
TRUE, // apply
|
|
TRUE, // Separator
|
|
FALSE // Modal
|
|
)
|
|
{
|
|
m_context = context;
|
|
|
|
fe_UnmanageChild_safe (m_okButton);
|
|
|
|
XtVaSetValues(m_chrome, XmNchildPlacement, XmPLACE_BELOW_SELECTION, NULL);
|
|
|
|
m_text = XmSelectionBoxGetChild (m_chrome, XmDIALOG_SELECTION_LABEL);
|
|
|
|
XtManageChild(m_text);
|
|
|
|
XtAddCallback(m_chrome, XmNdestroyCallback, destroy_cb, this);
|
|
XtAddCallback(m_chrome, XmNcancelCallback, close_cb, this);
|
|
XtAddCallback(m_chrome, XmNapplyCallback, apply_cb, this);
|
|
XtAddCallback(m_chrome, XmNokCallback, ok_cb, this);
|
|
|
|
m_radioBox =
|
|
XmVaCreateSimpleRadioBox(m_chrome, "radiobox", 0, NULL,
|
|
XmVaRADIOBUTTON, NULL, NULL, NULL, NULL,
|
|
XmVaRADIOBUTTON, NULL, NULL, NULL, NULL,
|
|
NULL);
|
|
|
|
int numKids;
|
|
Widget* kids;
|
|
|
|
XtVaGetValues(m_radioBox, XmNnumChildren, &numKids, XmNchildren, &kids, 0);
|
|
XP_ASSERT(numKids == 2);
|
|
|
|
m_doAll = kids[0];
|
|
m_doSelected = kids[1];
|
|
|
|
XtManageChildren(kids, numKids);
|
|
|
|
XtManageChild(m_radioBox);
|
|
|
|
XmString str = XmStringCreate( XP_GetString( XFE_LOOK_FOR_DOCUMENTS_THAT_HAVE_CHANGED_ON ),
|
|
XmFONTLIST_DEFAULT_TAG);
|
|
XtVaSetValues(m_text, XmNlabelString, str, NULL);
|
|
XmStringFree(str);
|
|
|
|
fe_HackDialogTranslations (m_chrome);
|
|
}
|
|
|
|
XFE_BookmarkWhatsNewDialog::~XFE_BookmarkWhatsNewDialog()
|
|
{
|
|
close();
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::destroy_cb(Widget /*widget*/,
|
|
XtPointer closure, XtPointer /*call_data*/)
|
|
{
|
|
XFE_BookmarkWhatsNewDialog* obj = (XFE_BookmarkWhatsNewDialog *)closure;
|
|
|
|
obj->close();
|
|
}
|
|
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::close()
|
|
{
|
|
BM_CancelWhatsChanged(m_context);
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::close_cb(Widget /*widget*/,
|
|
XtPointer closure, XtPointer /*call_data*/)
|
|
{
|
|
XFE_BookmarkWhatsNewDialog* obj = (XFE_BookmarkWhatsNewDialog *)closure;
|
|
|
|
XtDestroyWidget(obj->getBaseWidget());
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::apply()
|
|
{
|
|
Boolean doselected = FALSE;
|
|
XtVaGetValues(m_doSelected, XmNset, &doselected, NULL);
|
|
BM_StartWhatsChanged(m_context, doselected);
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::apply_cb(Widget /*widget*/,
|
|
XtPointer closure, XtPointer /*call_data*/)
|
|
{
|
|
XFE_BookmarkWhatsNewDialog* obj = (XFE_BookmarkWhatsNewDialog *)closure;
|
|
|
|
obj->apply();
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::ok()
|
|
{
|
|
; // nothing more to do
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::ok_cb(Widget /*widget*/,
|
|
XtPointer closure, XtPointer /*call_data*/)
|
|
{
|
|
XFE_BookmarkWhatsNewDialog* obj = (XFE_BookmarkWhatsNewDialog *)closure;
|
|
|
|
obj->ok();
|
|
|
|
XtDestroyWidget(obj->getBaseWidget());
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::updateWhatsChanged(const char* url,
|
|
int32 done, int32 total,
|
|
const char* totaltime)
|
|
{
|
|
char buf[1024];
|
|
XmString str;
|
|
|
|
if (!m_chrome) return;
|
|
|
|
if (m_radioBox) {
|
|
fe_UnmanageChild_safe(m_radioBox);
|
|
fe_UnmanageChild_safe(m_applyButton);
|
|
m_radioBox = NULL;
|
|
}
|
|
|
|
if ( url )
|
|
PR_snprintf(buf, sizeof(buf),
|
|
XP_GetString( XFE_ESTIMATED_TIME_REMAINING_CHECKED ),
|
|
url,
|
|
total - done,
|
|
total > 0 ? done * 100 / total : 0,
|
|
totaltime);
|
|
else
|
|
PR_snprintf(buf, sizeof(buf),
|
|
XP_GetString( XFE_ESTIMATED_TIME_REMAINING_CHECKING ),
|
|
total - done,
|
|
total > 0 ? done * 100 / total : 0,
|
|
totaltime);
|
|
|
|
str = XmStringCreateLtoR(buf, XmFONTLIST_DEFAULT_TAG);
|
|
XtVaSetValues(m_text, XmNlabelString, str, NULL);
|
|
XmStringFree(str);
|
|
}
|
|
|
|
void
|
|
XFE_BookmarkWhatsNewDialog::finishedWhatsChanged(int32 totalchecked,
|
|
int32 numreached,
|
|
int32 numchanged)
|
|
{
|
|
char buf[1024];
|
|
XmString str;
|
|
fe_UnmanageChild_safe(m_radioBox);
|
|
fe_UnmanageChild_safe(m_cancelButton);
|
|
XtManageChild(m_okButton);
|
|
PR_snprintf(buf, sizeof(buf), XP_GetString( XFE_DONE_CHECKING_ETC ),
|
|
totalchecked, numreached, numchanged);
|
|
|
|
str = XmStringCreateLtoR(buf, XmFONTLIST_DEFAULT_TAG);
|
|
XtVaSetValues(m_text, XmNlabelString, str, NULL);
|
|
XmStringFree(str);
|
|
}
|