Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: HaikuArchives/Calendar
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: bfb1d29fad3f
Choose a base ref
...
head repository: HaikuArchives/Calendar
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 28be78694345
Choose a head ref
  • 1 commit
  • 11 files changed
  • 1 contributor

Commits on Oct 30, 2021

  1. Events window tweaks, "hiding" events (#94)

    * Support for "Hiding" events
    
    Events can now be "hidden": undisplayed in Calendar without actually
    deleting the file.
    
    The way menu items of and the way hidden/deleted events are filtered out
    of Calendar have been tweaked to lay the groundwork for a new DayView
    mode or setting that allows management of deleted/hidden events (with the
    ignoreHidden parameter of GetEventsOf*() methods).
    
    * Event Window tweaks, better opening by file
    
    Adds to the Event Manager window a "Status" box for toggling
    whether or not an event is cancelled/hidden.
    
    Also better handles editing events opened directly by their file― all
    edits remain with the selected file, even if they otherwise wouldn't
    have (e.g., one copy of an event in trash and one not).
    
    Events can also be "Undeleted" from the Event Manager window, which
    restores them to their deleted path or to the events directory.
    JadedCtrl authored Oct 30, 2021
    Copy the full SHA
    28be786 View commit details
Showing with 387 additions and 216 deletions.
  1. +15 −3 src/DayView.cpp
  2. +1 −0 src/DayView.h
  3. +16 −4 src/EventListView.cpp
  4. +1 −0 src/EventListView.h
  5. +129 −80 src/EventWindow.cpp
  6. +6 −0 src/EventWindow.h
  7. +20 −25 src/MainWindow.cpp
  8. +1 −4 src/MainWindow.h
  9. +179 −91 src/db/QueryDBManager.cpp
  10. +17 −8 src/db/QueryDBManager.h
  11. +2 −1 src/model/Event.h
18 changes: 15 additions & 3 deletions src/DayView.cpp
Original file line number Diff line number Diff line change
@@ -97,24 +97,32 @@ DayView::MessageReceived(BMessage* message)
}
case kDeleteEventMessage:
case kCancelEventMessage:
case kHideEventMessage:
{
int32 selection = fEventListView->CurrentSelection();
if (selection < 0)
return;
Event* event = ((Event*)fEventList->ItemAt(selection));
bool isCancelled = (event->GetStatus() & EVENT_CANCELLED);
bool isHidden = (event->GetStatus() & EVENT_HIDDEN);

BString title(B_TRANSLATE("Confirm delete"));
BString label(B_TRANSLATE("Are you sure you want to move the selected event to Trash?"));
if (message->what == kCancelEventMessage) {
title = B_TRANSLATE("Confirm cancellation");
label = B_TRANSLATE("Are you sure you want to cancel the selected event?");
} else if (message->what == kHideEventMessage) {
title = B_TRANSLATE("Confirm hiding");
label = B_TRANSLATE("Are you sure you want to hide the selected event?\n"
"If you want to unhide it, you'll have to open the event file manually.");
}

// If disabling a previous cancellation, the confirmation dialogue
// doesn't really make sense.
// If disabling a previous cancellation or unhiding, the
// confirmation dialogue doesn't really make sense.
int32 button_index = 0;
if (!(message->what == kCancelEventMessage && isCancelled == true)) {
if (!(message->what == kCancelEventMessage && isCancelled == true)
&& !(message->what == kHideEventMessage && isHidden == true))
{
BAlert* alert = new BAlert(title, label, NULL, B_TRANSLATE("OK"),
B_TRANSLATE("Cancel"), B_WIDTH_AS_USUAL, B_WARNING_ALERT);
alert->SetShortcut(1, B_ESCAPE);
@@ -128,6 +136,10 @@ DayView::MessageReceived(BMessage* message)
newEvent.SetStatus(newEvent.GetStatus() | EVENT_CANCELLED);
else if (message->what == kCancelEventMessage)
newEvent.SetStatus(newEvent.GetStatus() & ~EVENT_CANCELLED);
else if (message->what == kHideEventMessage && isHidden == false)
newEvent.SetStatus(newEvent.GetStatus() | EVENT_HIDDEN);
else if (message->what == kHideEventMessage)
newEvent.SetStatus(newEvent.GetStatus() & ~EVENT_HIDDEN);
else
newEvent.SetStatus(newEvent.GetStatus() | EVENT_DELETED);

1 change: 1 addition & 0 deletions src/DayView.h
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ class QueryDBManager;
const uint32 kEditEventMessage = 'ksem';
const uint32 kDeleteEventMessage = 'kdem';
const uint32 kCancelEventMessage = 'kcem';
const uint32 kHideEventMessage = 'khev';
const uint32 kLaunchEventManagerToModify = 'klem';
const uint32 kEventSelected = 'kevs';

20 changes: 16 additions & 4 deletions src/EventListView.cpp
Original file line number Diff line number Diff line change
@@ -126,13 +126,16 @@ EventListView::MessageReceived(BMessage* message)

case kDeleteActionInvoked:
case kCancelActionInvoked:
case kHideActionInvoked:
{
fShowingPopUpMenu = false;
BView* view = Window()->FindView("DayView");
BMessenger msgr(view);
BMessage msg(kDeleteEventMessage);
if (message->what == kCancelActionInvoked)
msg.what = kCancelEventMessage;
else if (message->what == kHideActionInvoked)
msg.what = kHideEventMessage;
msgr.SendMessage(&msg);
break;
}
@@ -198,9 +201,12 @@ EventListView::SelectionChanged()
if (CurrentSelection() > -1) {
EventListItem* sItem = dynamic_cast<EventListItem *>
(ItemAt(CurrentSelection()));
if (sItem != NULL)
msg.AddBool("_cancelled",
(sItem->GetEvent()->GetStatus() & EVENT_CANCELLED));
if (sItem != NULL) {
uint16 status = sItem->GetEvent()->GetStatus();
msg.AddBool("_cancelled", (status & EVENT_CANCELLED));
msg.AddBool("_deleted", (status & EVENT_DELETED));
msg.AddBool("_hidden", (status & EVENT_HIDDEN));
}
}
Messenger().SendMessage(&msg);
}
@@ -232,6 +238,7 @@ EventListView::_ShowPopUpMenu(BPoint screen)

EventListItem* sItem = dynamic_cast<EventListItem *>
(ItemAt(CurrentSelection()));
uint16 eventStatus = sItem->GetEvent()->GetStatus();

PopUpMenu* menu = new PopUpMenu("PopUpMenu", this);

@@ -241,10 +248,15 @@ EventListView::_ShowPopUpMenu(BPoint screen)
menu->AddItem(item);
item = new BMenuItem(B_TRANSLATE("Delete"),
new BMessage(kDeleteActionInvoked), 'D');
item->SetMarked(eventStatus & EVENT_DELETED);
menu->AddItem(item);
item = new BMenuItem(B_TRANSLATE("Cancel"),
new BMessage(kCancelActionInvoked));
item->SetMarked(sItem->GetEvent()->GetStatus() & EVENT_CANCELLED);
item->SetMarked(eventStatus & EVENT_CANCELLED);
menu->AddItem(item);
item = new BMenuItem(B_TRANSLATE("Hide"),
new BMessage(kHideActionInvoked));
item->SetMarked(eventStatus & EVENT_HIDDEN);
menu->AddItem(item);

if (!fPopUpMenuEnabled) {
1 change: 1 addition & 0 deletions src/EventListView.h
Original file line number Diff line number Diff line change
@@ -33,6 +33,7 @@ class EventListView : public BListView {
static const int32 kEditActionInvoked = 1000;
static const int32 kDeleteActionInvoked = 1001;
static const int32 kCancelActionInvoked = 1002;
static const int32 kHideActionInvoked = 1003;

void _ShowPopUpMenu(BPoint screen);

Loading