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

View File

@ -2209,6 +2209,9 @@ BRoster::AddToRecentApps(const char *appSig) const
void void
BRoster::ClearRecentDocuments() const 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 /*! \brief Sends a request to the roster to clear the recent
@ -2217,6 +2220,9 @@ BRoster::ClearRecentDocuments() const
void void
BRoster::ClearRecentFolders() const 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 /*! \brief Sends a request to the roster to clear the recent
@ -2225,6 +2231,71 @@ BRoster::ClearRecentFolders() const
void void
BRoster::ClearRecentApps() const 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); fRoster->HandleAddToRecentApps(message);
break; break;
case B_REG_CLEAR_RECENT_DOCUMENTS: case B_REG_CLEAR_RECENT_DOCUMENTS:
fRoster->HandleClearRecentDocuments(message); fRoster->ClearRecentDocuments();
break; break;
case B_REG_CLEAR_RECENT_FOLDERS: case B_REG_CLEAR_RECENT_FOLDERS:
fRoster->HandleClearRecentFolders(message); fRoster->ClearRecentFolders();
break; break;
case B_REG_CLEAR_RECENT_APPS: 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; break;
// message runner requests // message runner requests
case B_REG_REGISTER_MESSAGE_RUNNER: case B_REG_REGISTER_MESSAGE_RUNNER:

View File

@ -794,7 +794,8 @@ TRoster::HandleStopWatching(BMessage *request)
/*! \brief Handles a GetRecentDocuments() request. /*! \brief Handles a GetRecentDocuments() request.
\param request The request message \param request The request message
*/ */
void TRoster::HandleGetRecentDocuments(BMessage *request) void
TRoster::HandleGetRecentDocuments(BMessage *request)
{ {
FUNCTION_START(); FUNCTION_START();
_HandleGetRecentEntries(request); _HandleGetRecentEntries(request);
@ -805,7 +806,8 @@ void TRoster::HandleGetRecentDocuments(BMessage *request)
/*! \brief Handles a GetRecentFolders() request. /*! \brief Handles a GetRecentFolders() request.
\param request The request message \param request The request message
*/ */
void TRoster::HandleGetRecentFolders(BMessage *request) void
TRoster::HandleGetRecentFolders(BMessage *request)
{ {
FUNCTION_START(); FUNCTION_START();
_HandleGetRecentEntries(request); _HandleGetRecentEntries(request);
@ -816,7 +818,8 @@ void TRoster::HandleGetRecentFolders(BMessage *request)
/*! \brief Handles a GetRecentApps() request. /*! \brief Handles a GetRecentApps() request.
\param request The request message \param request The request message
*/ */
void TRoster::HandleGetRecentApps(BMessage *request) void
TRoster::HandleGetRecentApps(BMessage *request)
{ {
FUNCTION_START(); FUNCTION_START();
@ -841,7 +844,8 @@ void TRoster::HandleGetRecentApps(BMessage *request)
/*! \brief Handles an AddToRecentDocuments() request. /*! \brief Handles an AddToRecentDocuments() request.
\param request The request message \param request The request message
*/ */
void TRoster::HandleAddToRecentDocuments(BMessage *request) void
TRoster::HandleAddToRecentDocuments(BMessage *request)
{ {
FUNCTION_START(); FUNCTION_START();
@ -859,7 +863,6 @@ void TRoster::HandleAddToRecentDocuments(BMessage *request)
error = request->FindString("app sig", &appSig); error = request->FindString("app sig", &appSig);
if (!error) if (!error)
error = fRecentDocuments.Add(&ref, appSig); error = fRecentDocuments.Add(&ref, appSig);
error = B_ERROR;
reply.AddInt32("result", error); reply.AddInt32("result", error);
request->SendReply(&reply); request->SendReply(&reply);
@ -870,7 +873,8 @@ void TRoster::HandleAddToRecentDocuments(BMessage *request)
/*! \brief Handles an AddToRecentFolders() request. /*! \brief Handles an AddToRecentFolders() request.
\param request The request message \param request The request message
*/ */
void TRoster::HandleAddToRecentFolders(BMessage *request) void
TRoster::HandleAddToRecentFolders(BMessage *request)
{ {
FUNCTION_START(); FUNCTION_START();
@ -888,7 +892,6 @@ void TRoster::HandleAddToRecentFolders(BMessage *request)
error = request->FindString("app sig", &appSig); error = request->FindString("app sig", &appSig);
if (!error) if (!error)
error = fRecentFolders.Add(&ref, appSig); error = fRecentFolders.Add(&ref, appSig);
error = B_ERROR;
reply.AddInt32("result", error); reply.AddInt32("result", error);
request->SendReply(&reply); request->SendReply(&reply);
@ -899,32 +902,97 @@ void TRoster::HandleAddToRecentFolders(BMessage *request)
/*! \brief Handles an AddToRecentApps() request. /*! \brief Handles an AddToRecentApps() request.
\param request The request message \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 void
/*! \brief Handles a ClearRecentDocuments() request. TRoster::HandleLoadRecentLists(BMessage *request)
\param request The request message
*/
void TRoster::HandleClearRecentDocuments(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 void
/*! \brief Handles a ClearRecentFolders() request. TRoster::HandleSaveRecentLists(BMessage *request)
\param request The request message
*/
void TRoster::HandleClearRecentFolders(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 // ClearRecentDocuments
/*! \brief Handles a ClearRecentApps() request. /*! \brief Clears the current list of recent documents
\param request The request message
*/ */
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 // Init

View File

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