Fleshed out any missing pieces of BRoster::

- ClearRecent{Docs,Folders,Apps}
- AddToRecentApps()
- {Load,Save}RecentLists()


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1878 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Tyler Dauwalder 2002-11-08 08:36:08 +00:00
parent 58b477650f
commit 1bde02ae7b
5 changed files with 179 additions and 28 deletions

View File

@ -157,6 +157,7 @@ private:
friend status_t _send_to_roster_(BMessage *, BMessage *, bool);
friend bool _is_valid_roster_mess_(bool);
friend void BPrivate::init_registrar_roster(BMessenger, BMessenger);
friend class GetRecentTester;
class ArgVector;
@ -212,6 +213,8 @@ private:
void ClearRecentDocuments() const;
void ClearRecentFolders() const;
void ClearRecentApps() const;
void LoadRecentLists(const char *file) const;
void SaveRecentLists(const char *file) const;
BMessenger fMess;
BMessenger fMimeMess;

View File

@ -2209,6 +2209,9 @@ BRoster::AddToRecentApps(const char *appSig) const
void
BRoster::ClearRecentDocuments() const
{
BMessage request(B_REG_CLEAR_RECENT_DOCUMENTS);
BMessage reply;
fMess.SendMessage(&request, &reply);
}
/*! \brief Sends a request to the roster to clear the recent
@ -2217,6 +2220,9 @@ BRoster::ClearRecentDocuments() const
void
BRoster::ClearRecentFolders() const
{
BMessage request(B_REG_CLEAR_RECENT_FOLDERS);
BMessage reply;
fMess.SendMessage(&request, &reply);
}
/*! \brief Sends a request to the roster to clear the recent
@ -2225,6 +2231,71 @@ BRoster::ClearRecentFolders() const
void
BRoster::ClearRecentApps() const
{
BMessage request(B_REG_CLEAR_RECENT_APPS);
BMessage reply;
fMess.SendMessage(&request, &reply);
}
// LoadRecentLists
/*! \brief Loads the system's recently used document, folder, and
application lists from the specified file.
\note The current lists are cleared before loading the new lists
\param filename The name of the file to load from
*/
void
BRoster::LoadRecentLists(const char *filename) const
{
status_t error = B_OK;
// compose the request message
BMessage request(B_REG_LOAD_RECENT_LISTS);
if (error == B_OK)
error = request.AddString("filename", filename);
// send the request
BMessage reply;
if (error == B_OK)
error = fMess.SendMessage(&request, &reply);
// evaluate the reply
status_t result;
if (error == B_OK)
error = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (error == B_OK)
error = reply.FindInt32("result", &result);
if (error == B_OK)
error = result;
// Nothing to return... how sad :-(
// return error;
}
// SaveRecentLists
/*! \brief Saves the system's recently used document, folder, and
application lists to the specified file.
\param filename The name of the file to save to
*/
void
BRoster::SaveRecentLists(const char *filename) const
{
status_t error = B_OK;
// compose the request message
BMessage request(B_REG_SAVE_RECENT_LISTS);
if (error == B_OK)
error = request.AddString("filename", filename);
// send the request
BMessage reply;
if (error == B_OK)
error = fMess.SendMessage(&request, &reply);
// evaluate the reply
status_t result;
if (error == B_OK)
error = reply.what == B_REG_RESULT ? B_OK : B_BAD_REPLY;
if (error == B_OK)
error = reply.FindInt32("result", &result);
if (error == B_OK)
error = result;
// Nothing to return... how sad :-(
// return error;
}
/*-----------------------------------------------------*/

View File

@ -156,13 +156,19 @@ Registrar::MessageReceived(BMessage *message)
fRoster->HandleAddToRecentApps(message);
break;
case B_REG_CLEAR_RECENT_DOCUMENTS:
fRoster->HandleClearRecentDocuments(message);
fRoster->ClearRecentDocuments();
break;
case B_REG_CLEAR_RECENT_FOLDERS:
fRoster->HandleClearRecentFolders(message);
fRoster->ClearRecentFolders();
break;
case B_REG_CLEAR_RECENT_APPS:
fRoster->HandleClearRecentApps(message);
fRoster->ClearRecentApps();
break;
case B_REG_LOAD_RECENT_LISTS:
fRoster->HandleLoadRecentLists(message);
break;
case B_REG_SAVE_RECENT_LISTS:
fRoster->HandleSaveRecentLists(message);
break;
// message runner requests
case B_REG_REGISTER_MESSAGE_RUNNER:

View File

@ -794,7 +794,8 @@ TRoster::HandleStopWatching(BMessage *request)
/*! \brief Handles a GetRecentDocuments() request.
\param request The request message
*/
void TRoster::HandleGetRecentDocuments(BMessage *request)
void
TRoster::HandleGetRecentDocuments(BMessage *request)
{
FUNCTION_START();
_HandleGetRecentEntries(request);
@ -805,7 +806,8 @@ void TRoster::HandleGetRecentDocuments(BMessage *request)
/*! \brief Handles a GetRecentFolders() request.
\param request The request message
*/
void TRoster::HandleGetRecentFolders(BMessage *request)
void
TRoster::HandleGetRecentFolders(BMessage *request)
{
FUNCTION_START();
_HandleGetRecentEntries(request);
@ -816,7 +818,8 @@ void TRoster::HandleGetRecentFolders(BMessage *request)
/*! \brief Handles a GetRecentApps() request.
\param request The request message
*/
void TRoster::HandleGetRecentApps(BMessage *request)
void
TRoster::HandleGetRecentApps(BMessage *request)
{
FUNCTION_START();
@ -841,7 +844,8 @@ void TRoster::HandleGetRecentApps(BMessage *request)
/*! \brief Handles an AddToRecentDocuments() request.
\param request The request message
*/
void TRoster::HandleAddToRecentDocuments(BMessage *request)
void
TRoster::HandleAddToRecentDocuments(BMessage *request)
{
FUNCTION_START();
@ -859,7 +863,6 @@ void TRoster::HandleAddToRecentDocuments(BMessage *request)
error = request->FindString("app sig", &appSig);
if (!error)
error = fRecentDocuments.Add(&ref, appSig);
error = B_ERROR;
reply.AddInt32("result", error);
request->SendReply(&reply);
@ -870,7 +873,8 @@ void TRoster::HandleAddToRecentDocuments(BMessage *request)
/*! \brief Handles an AddToRecentFolders() request.
\param request The request message
*/
void TRoster::HandleAddToRecentFolders(BMessage *request)
void
TRoster::HandleAddToRecentFolders(BMessage *request)
{
FUNCTION_START();
@ -888,7 +892,6 @@ void TRoster::HandleAddToRecentFolders(BMessage *request)
error = request->FindString("app sig", &appSig);
if (!error)
error = fRecentFolders.Add(&ref, appSig);
error = B_ERROR;
reply.AddInt32("result", error);
request->SendReply(&reply);
@ -899,32 +902,97 @@ void TRoster::HandleAddToRecentFolders(BMessage *request)
/*! \brief Handles an AddToRecentApps() request.
\param request The request message
*/
void TRoster::HandleAddToRecentApps(BMessage *request)
void
TRoster::HandleAddToRecentApps(BMessage *request)
{
FUNCTION_START();
if (!request) {
D(PRINT(("WARNING: TRoster::HandleAddToRecentApps(NULL) called\n")));
return;
}
const char *appSig;
BMessage reply(B_REG_RESULT);
status_t error = request->FindString("app sig", &appSig);
if (!error)
error = fRecentApps.Add(appSig);
reply.AddInt32("result", error);
request->SendReply(&reply);
FUNCTION_END();
}
// HandleClearRecentDocuments
/*! \brief Handles a ClearRecentDocuments() request.
\param request The request message
*/
void TRoster::HandleClearRecentDocuments(BMessage *request)
void
TRoster::HandleLoadRecentLists(BMessage *request)
{
FUNCTION_START();
if (!request) {
D(PRINT(("WARNING: TRoster::HandleLoadRecentLists(NULL) called\n")));
return;
}
const char *filename;
BMessage reply(B_REG_RESULT);
status_t error = request->FindString("filename", &filename);
if (!error)
error = _LoadRosterSettings(filename);
reply.AddInt32("result", error);
request->SendReply(&reply);
FUNCTION_END();
}
// HandleClearRecentFolders
/*! \brief Handles a ClearRecentFolders() request.
\param request The request message
*/
void TRoster::HandleClearRecentFolders(BMessage *request)
void
TRoster::HandleSaveRecentLists(BMessage *request)
{
FUNCTION_START();
if (!request) {
D(PRINT(("WARNING: TRoster::HandleSaveRecentLists(NULL) called\n")));
return;
}
const char *filename;
BMessage reply(B_REG_RESULT);
status_t error = request->FindString("filename", &filename);
if (!error)
error = _SaveRosterSettings(filename);
reply.AddInt32("result", error);
request->SendReply(&reply);
FUNCTION_END();
}
// HandleClearRecentApps
/*! \brief Handles a ClearRecentApps() request.
\param request The request message
// ClearRecentDocuments
/*! \brief Clears the current list of recent documents
*/
void TRoster::HandleClearRecentApps(BMessage *request)
void
TRoster::ClearRecentDocuments()
{
fRecentDocuments.Clear();
}
// ClearRecentFolders
/*! \brief Clears the current list of recent folders
*/
void
TRoster::ClearRecentFolders()
{
fRecentFolders.Clear();
}
// ClearRecentApps
/*! \brief Clears the current list of recent apps
*/
void
TRoster::ClearRecentApps()
{
fRecentApps.Clear();
}
// Init

View File

@ -75,9 +75,12 @@ public:
void HandleAddToRecentDocuments(BMessage *request);
void HandleAddToRecentFolders(BMessage *request);
void HandleAddToRecentApps(BMessage *request);
void HandleClearRecentDocuments(BMessage *request);
void HandleClearRecentFolders(BMessage *request);
void HandleClearRecentApps(BMessage *request);
void HandleLoadRecentLists(BMessage *request);
void HandleSaveRecentLists(BMessage *request);
void ClearRecentDocuments();
void ClearRecentFolders();
void ClearRecentApps();
status_t Init();