feat: add new contacts list and connect to xmpp button

This commit is contained in:
hexlocation 2025-02-08 12:57:55 +00:00
parent d7781bbbf4
commit 59ac3aeb0a
5 changed files with 64 additions and 11 deletions

48
App.cpp
View file

@ -4,12 +4,17 @@
#include <InterfaceDefs.h>
#include <Layout.h>
#include <LayoutItem.h>
#include <Message.h>
#include <Rect.h>
#include <Window.h>
#include <String.h>
#include <StringView.h>
#include <GroupLayoutBuilder.h>
#include <Window.h>
#include <Button.h>
#include <cstdio>
#include <format>
#include <iostream>
#include "Contacts.h"
// quick and dirty function to quickly make text labels
BStringView *MakeText(const char* text)
@ -19,31 +24,54 @@ BStringView *MakeText(const char* text)
App::App(void) : BApplication(std::format("application/x-vnd.{}-{}", APP_AUTHOR, APP_NAME).c_str())
{
std::cout << "hello world!!\n";
// Initialize BRect frame for window
BRect frame(100, 100, 500, 400);
// Initialize parent group for all UI elements to sit in. This is so they all get grouped nicely together
BGroupLayout *pGroup = new BGroupLayout(B_HORIZONTAL);
// Create window
BWindow *window = new BWindow(frame, std::format("{} by {}", APP_NAME, APP_AUTHOR).c_str(), B_TITLED_WINDOW, B_QUIT_ON_WINDOW_CLOSE);
BWindow *window = new BWindow(frame, std::format("{} by {}", APP_NAME, APP_AUTHOR).c_str(), B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS);
// Set window layout to parent group created earlier
window->SetLayout(pGroup);
// Initialize special "label" group for all of our labels
BGroupLayout *lGroup = new BGroupLayout(B_HORIZONTAL, 100);
// Initialize special UI group for all of our "real" elements
BGroupLayout *uGroup = new BGroupLayout(B_HORIZONTAL, 100);
// Add label group to parent group
pGroup->AddItem(lGroup);
pGroup->AddItem(uGroup);
// Center label group
lGroup->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER));
uGroup->SetExplicitAlignment(BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER));
// And finally, add allat labels!!
lGroup->AddView(MakeText("label 1"));
lGroup->AddView(MakeText("label 2"));
lGroup->AddView(MakeText("label 3"));
// And finally, add a button!!
BButton *connectButton = new BButton(frame, "connect", "Connect to XMPP", new BMessage(msgConnectButtonClicked));
connectButton->SetTarget(this);
uGroup->AddView(connectButton);
window->Show();
App::ConnectWindow = window;
}
void App::MessageReceived(BMessage *msg)
{
switch(msg->what) {
case msgConnectButtonClicked:
{
printf("Connect button clicked...\n");
App::ConnectWindow->Hide();
App::ContactsWindow = ShowContacts();
break;
}
default:
{
printf("Unknown message received: %d\n", msg->what);
BApplication::MessageReceived(msg);
break;
}
}
}
int main(void)

8
App.h
View file

@ -1,15 +1,23 @@
#ifndef APP_H
#define APP_H
#include <Message.h>
#include <Window.h>
#define APP_NAME "Renga"
#define APP_AUTHOR "hex_andre"
const uint32 msgConnectButtonClicked = 'mCBC';
#include <Application.h>
class App : public BApplication
{
public:
App(void);
virtual void MessageReceived(BMessage *msg);
BWindow *ConnectWindow;
BWindow *ContactsWindow;
};

14
Contacts.cpp Normal file
View file

@ -0,0 +1,14 @@
#include "Contacts.h"
#include "App.h"
#include <Application.h>
#include <Rect.h>
#include <Window.h>
BWindow *ShowContacts()
{
// POS W H
BRect frame(200,200,600,400);
BWindow *window = new BWindow(frame, "Contacts List", B_TITLED_WINDOW, B_NOT_MINIMIZABLE | B_QUIT_ON_WINDOW_CLOSE);
window->Show();
return window;
}

3
Contacts.h Normal file
View file

@ -0,0 +1,3 @@
#include "App.h"
#include <Window.h>
extern BWindow *ShowContacts();

View file

@ -5,7 +5,7 @@ FLAGS=-lbe -std=c++20 -lstdc++
all: build
build:
$(CPP) App.cpp -o $(BINARY) $(FLAGS)
$(CPP) *.cpp -o $(BINARY) $(FLAGS)
test: build
./renga