aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Body.cpp8
-rw-r--r--src/NetUtils.cpp5
-rw-r--r--src/QuickMedia.cpp44
3 files changed, 29 insertions, 28 deletions
diff --git a/src/Body.cpp b/src/Body.cpp
index 6b7826d..f1c101f 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -476,14 +476,14 @@ namespace QuickMedia {
else
strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M:%S %Y", message_tm);
*/
- strftime(time_str, sizeof(time_str) - 1, "%H:%M:%S", message_tm);
+ strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M", message_tm);
if(body_item->timestamp_text)
body_item->timestamp_text->setString(time_str);
else
- body_item->timestamp_text = std::make_unique<sf::Text>(time_str, *font, 14);
+ body_item->timestamp_text = std::make_unique<sf::Text>(time_str, *font, 10);
- body_item->timestamp_text->setFillColor(sf::Color(185, 190, 198));
+ body_item->timestamp_text->setFillColor(sf::Color(185, 190, 198, 100));
}
}
@@ -702,7 +702,7 @@ namespace QuickMedia {
}
if(item->timestamp_text) {
- item->timestamp_text->setPosition(std::floor(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - padding_x), timestamp_text_y + 4.0f);
+ item->timestamp_text->setPosition(std::floor(item_pos.x + size.x - item->timestamp_text->getLocalBounds().width - padding_x), timestamp_text_y + 8.0f);
window.draw(*item->timestamp_text);
}
diff --git a/src/NetUtils.cpp b/src/NetUtils.cpp
index e87c42c..4d5a940 100644
--- a/src/NetUtils.cpp
+++ b/src/NetUtils.cpp
@@ -105,9 +105,7 @@ namespace QuickMedia {
// Implementation follows URI standard: https://tools.ietf.org/html/rfc3986#section-2.2
// TODO: Maybe check if the TLD only contains valid characters (is_alpha)?
- std::vector<std::string> extract_urls(const std::string &str) {
- std::vector<std::string> urls;
-
+ void extract_urls(const std::string &str, std::vector<std::string> &urls) {
size_t url_start = std::string::npos;
size_t url_dot_index = std::string::npos;
// str.size() is fine, we want to include the NULL character so we can extract url at the end of the string
@@ -135,6 +133,5 @@ namespace QuickMedia {
}
}
}
- return urls;
}
} \ No newline at end of file
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 48ef01b..d0a93fe 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -108,7 +108,7 @@ static bool vsync_set = false;
static bool test_vsync(Display *disp, Window window) {
unsigned int swap = 0;
glXQueryDrawable(disp, window, GLX_SWAP_INTERVAL_EXT, &swap);
- printf("The swap interval is %u\n", swap);
+ fprintf(stderr, "The swap interval is %u\n", swap);
return swap == 1;
}
@@ -3180,7 +3180,7 @@ namespace QuickMedia {
room_search_bar.onTextSubmitCallback =
[this, &tabs, &selected_tab, &current_room, &room_name_text,
&modify_related_messages_in_current_room, &room_avatar_thumbnail_data,
- &read_marker_timeout_ms, &redraw]
+ &read_marker_timeout_ms, &redraw, &room_search_bar]
(const std::string&)
{
BodyItem *selected_item = tabs[ROOMS_TAB_INDEX].body->get_selected();
@@ -3209,9 +3209,11 @@ namespace QuickMedia {
read_marker_timeout_ms = 0;
redraw = true;
+ room_search_bar.clear();
+ tabs[ROOMS_TAB_INDEX].body->filter_search_fuzzy("");
};
- Entry chat_input("Press m or i to begin writing a message...", font.get(), cjk_font.get());
+ Entry chat_input("Press m to begin writing a message...", font.get(), cjk_font.get());
chat_input.draw_background = false;
chat_input.set_editable(false);
@@ -3468,12 +3470,10 @@ namespace QuickMedia {
} else if(event.type == sf::Event::Resized || event.type == sf::Event::GainedFocus) {
redraw = true;
} else if(event.type == sf::Event::KeyPressed && chat_state == ChatState::NAVIGATING) {
- if(event.key.code == sf::Keyboard::Up || event.key.code == sf::Keyboard::PageUp || event.key.code == sf::Keyboard::Home || event.key.code == sf::Keyboard::K)
- {
+ if(event.key.code == sf::Keyboard::Up || event.key.code == sf::Keyboard::PageUp || event.key.code == sf::Keyboard::Home){
bool hit_top = false;
switch(event.key.code) {
case sf::Keyboard::Up:
- case sf::Keyboard::K:
hit_top = !tabs[selected_tab].body->select_previous_item();
break;
case sf::Keyboard::PageUp:
@@ -3498,15 +3498,15 @@ namespace QuickMedia {
return messages;
});
}
- } else if(event.key.code == sf::Keyboard::Down || event.key.code == sf::Keyboard::J) {
+ } else if(event.key.code == sf::Keyboard::Down) {
tabs[selected_tab].body->select_next_item();
} else if(event.key.code == sf::Keyboard::PageDown) {
tabs[selected_tab].body->select_next_page();
} else if(event.key.code == sf::Keyboard::End) {
tabs[selected_tab].body->select_last_item();
- } else if((event.key.code == sf::Keyboard::Left || event.key.code == sf::Keyboard::H) && synced) {
+ } else if((event.key.code == sf::Keyboard::Left) && synced && selected_tab > 0) {
tabs[selected_tab].body->clear_cache();
- selected_tab = std::max(0, selected_tab - 1);
+ --selected_tab;
read_marker_timer.restart();
redraw = true;
if(typing && current_room) {
@@ -3514,9 +3514,9 @@ namespace QuickMedia {
typing = false;
typing_futures.push_back(std::async(typing_async_func, false, current_room));
}
- } else if((event.key.code == sf::Keyboard::Right || event.key.code == sf::Keyboard::L) && synced) {
+ } else if((event.key.code == sf::Keyboard::Right) && synced && selected_tab < (int)tabs.size() - 1) {
tabs[selected_tab].body->clear_cache();
- selected_tab = std::min((int)tabs.size() - 1, selected_tab + 1);
+ ++selected_tab;
read_marker_timer.restart();
redraw = true;
if(typing && current_room) {
@@ -3555,9 +3555,10 @@ namespace QuickMedia {
}
// TODO: If content type is a file, show file-manager prompt where it should be saved and asynchronously save it instead
-
- const std::string &message_str = selected->get_description();
- std::vector<std::string> urls = extract_urls(message_str);
+ std::vector<std::string> urls;
+ extract_urls(selected->get_description(), urls);
+ if(selected->embedded_item)
+ extract_urls(selected->embedded_item->get_description(), urls);
if(urls.size() == 1) {
launch_url(urls[0]);
} else if(urls.size() > 1) {
@@ -3584,12 +3585,15 @@ namespace QuickMedia {
} else if(event.key.code == sf::Keyboard::End) {
url_selection_body.select_last_item();
} else if(event.key.code == sf::Keyboard::Left) {
- // TODO: Clear url_selection_body?
- selected_tab = std::max(0, selected_tab - 1);
- chat_state = ChatState::NAVIGATING;
+ if(selected_tab > 0) {
+ --selected_tab;
+ chat_state = ChatState::NAVIGATING;
+ }
} else if(event.key.code == sf::Keyboard::Right) {
- selected_tab = std::min((int)tabs.size() - 1, selected_tab + 1);
- chat_state = ChatState::NAVIGATING;
+ if(selected_tab < (int)tabs.size() - 1) {
+ ++selected_tab;
+ chat_state = ChatState::NAVIGATING;
+ }
} else if(event.key.code == sf::Keyboard::Escape) {
url_selection_body.clear_items();
chat_state = ChatState::NAVIGATING;
@@ -3605,7 +3609,7 @@ namespace QuickMedia {
chat_input.set_editable(false);
}
- if(event.key.code == sf::Keyboard::M || event.key.code == sf::Keyboard::I) {
+ if(event.key.code == sf::Keyboard::M) {
chat_input.set_editable(true);
chat_state = ChatState::TYPING_MESSAGE;
}